I'm trying to find a method to cache one layer that its data is updated every 2 hours in the DB. From what I've found the best option is using Response Cache Headers timeout http://docs.geoserver.org/stable/en/user/webadmin/data/layers.html
What I've done is:
- enable direct integration with GeoServer WMS.
- add tiled=true parameter to WMS request
- replace
http://GEOSERVER_URL/wms
withhttp://GEOSERVER_URL/gwc/service/wms
- check "Response Cache Headers" with 7200 time specified as in http://docs.geoserver.org/stable/en/user/webadmin/data/layers.html
and when i look at the headers I see:
Cache-Control:max-age=7200, must-revalidate
Content-Disposition:inline; filename=geoserver-dispatch.image
Content-Type:image/png
Date:Sun, 04 May 2014 18:38:16 GMT
Expires:Sun, 04 May 2014 20:36:36 GMT
geowebcache-cache-result:HIT
geowebcache-crs:EPSG:900913
geowebcache-gridset:EPSG:900913
geowebcache-tile-bounds:12523442.712499999,2504688.5425000004,15028131.254999999,5009377.085000001
geowebcache-tile-index:[13, 9, 4]
geowebcache-tile-index:[13, 9, 4]
Last-Modified:Sun, 04 May 2014 07:06:05 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
I thought it worked but after 2 hours the layer didn't get updated! it's like that the layer is cached and frozen like forever. I think I'm missing something. any idea?
Best Answer
You might need to specifically ask GWC to truncate whatever has been generated so far.
I have some code to do this in Python, but basically you call something like this:
with data like this:
(I do some other code to identify the gridsets and image formats, gs and imf, and then truncate all of them after I write data overnight.)
If you want the full code, take a look here: https://gist.github.com/alexgleith/844146bb24b4f22d856e