Expiring tiles with GeoRSS¶
GeoRSS is an RSS feed containing geographic information in GML (Geography Markup Language) format. GML is an XML grammar for expressing geographical features.
GeoWebCache can read a GeoRSS feed, and use the information about features contained in that feed to determine which tiles to expire. This allows for a more dynamic and updated caching system.
GeoRSS expiration is set on a per-layer basis.
Reading a GeoRSS feed¶
You can configure a GeoRSS feed that GeoWebCache will read in the geowebcache.xml
file. Add the following tags inside a <wmsLayer>
immediately after any <gridSubset>
:
<wmsLayer>
<!-- ... -->
<gridSubset>
<!-- ... -->
</gridSubset>
<updateSources>
<geoRssFeed>
<feedUrl>GEORSS_FEED_URL</feedUrl>
<gridSetId>GRIDSET</gridSetId>
<pollInterval>INTERVAL</pollInterval>
<operation>OPERATION</operation>
<format>IMAGE_MIMETYPE</format>
<seedingThreads>THREADS</seedingThreads>
<maxMaskLevel>MAXMASKLEVEL</maxMaskLevel>
</geoRssFeed>
</updateSources>
<!-- ... -->
</wmsLayer>
The above variables are defined as:
Variable | Required? | Description |
---|---|---|
GEORSS_FEED_URL | Yes | The URL to valid GeoRSS feed. An example would be http://someserver/georss?layers=somelayer&lastupdate=${lastUpdate}&srs=EPSG:4326 |
GRIDSET | No | The relevant grid set for the layer. The geometries in the feed must be given in the same SRS as the grid set. |
INTERVAL | Yes | How often (in seconds) the GeoRSS feed is polled. |
OPERATION | No | One of the three GeoWebCache Operations: seed, reseed, or truncate. The default is truncate. Since truncation happens before any other task, seed when used here is identical to reseed. |
IMAGE_MIMETYPE | No | Used to specify a single format (MIME type, such as “image/png”) so that only tiles of that format are updated. If omitted, all tiles in all formats will be updated. |
THREADS | No | Controls the number of threads to use, if the operation is set to seed or reseed. This value is for a single image format, so if multiple image formats are specified, they will each have this number of threads apply to them. |
MAXMASKLEVEL | Yes | In order to determine what tiles are affected, the geometries from the feed are rendered onto canvases where every pixel represents a tile. This number determines the highest zoom level where such a raster is created. A higher number means a higher resolution image and thus fewer tiles, but requires more memory. 11 is usually a good number. |
Note also the lastupdate=${lastUpdate}
from the above GeoRSS feed example. This variable sets the timestamp of the last update, so that older features are not processed again. During the first poll, this value is not set, so all features are processed. The value is taken from the <updated>
field in the GeoRSS feed.