[ https://issues.apache.org/jira/browse/WICKET-1748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Timo Rantalaiho updated WICKET-1748: ------------------------------------ Affects Version/s: 1.4-M3 Fix Version/s: 1.4-M4 Assignee: Timo Rantalaiho Thanks Nathan, this sounds like a good band-aid until resource caching is cleaned up more, and the issue sounds familiar to me too. > 304 Last Modified responses should include an Expires header > ------------------------------------------------------------ > > Key: WICKET-1748 > URL: https://issues.apache.org/jira/browse/WICKET-1748 > Project: Wicket > Issue Type: Improvement > Components: wicket > Affects Versions: 1.3.4, 1.4-M3 > Reporter: Nathan Hamblen > Assignee: Timo Rantalaiho > Fix For: 1.4-M4 > > Attachments: last_mod.patch > > > I've been experimenting with Wicket and Apache's mod_cache to speed up > resource serving performance and I've come across a communications problem > between the two. When mod_cache is required to verify the status of a cached > resource by a client that unconditionally GETs with a max-age of 0, mod_cache > conditionally requests the resource from Wicket with an If-Modified-Since > header. Assuming the resource has not been modified, WicketFilter responds as > it always does with a 304 Not Modified and nothing else. mod_cache doesn't > process the request and just forwards it on to the unprepared client, because > mod_cache is following RFC 2616/13.9 that says not to handle query string URL > responses unless they have an Expires header. This is the bug: > https://issues.apache.org/bugzilla/show_bug.cgi?id=45341 > I suspect the behavior exhibited by mod_cache in this scenario is unintended, > but the Apache guy is saying that a 304 response must contain all headers > relevant for caching. Whether or not that is required by the standard, it is > certainly better that the 304 response contain a new Expires header. > Consider: a resource in a cache (let's say the browser cache) has passed its > expiration date. The browser, then, posts an If-Modified-Since and Wicket > responds, simply, "no". This does not update the expiration date for the > client, and never will. This resource will always be "expired" and need to be > revalidated with every request, instead of having the default shelf-life of > 1-hour. Wicket should ideally be resetting the expiration date by setting an > Expires header with a 304 the same as it does a 200. This would avoid the > mod_cache bug/feature, and improve caching precision generally. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.