Patches item #608957, was opened at 2002-09-13 09:31 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=304866&aid=608957&group_id=4866
Category: WebKit Group: None >Status: Closed Resolution: None Priority: 5 Submitted By: Ken Lalonde (kenlalonde) Assigned to: Stuart Donaldson (stuartd) Summary: If-Modified-Since support Initial Comment: WebKit makes no use of the If-Modified-Since HTTP header, which makes static content service inefficient. Of course, you can move your static content to a separate HTTP server, but adding support for If-Modified-Since buys most of the benefits and costs little. The attached patch modifies mod_webkit to pass the If-Modified-Since header via the request environment dictionary. While arguably less than elegant, this does the trick. The patch to UnknownFileTypeServlet checks the IMS value against the file's mtime. If it matches, it sets "Status 304" and sends no content. (It also corrects some unlikely but possible bugs.) ---------------------------------------------------------------------- >Comment By: Stuart Donaldson (stuartd) Date: 2003-02-22 21:25 Message: Logged In: YES user_id=326269 I have applied this to CVS with the exception of the portion which applied to PSP. I took the iconcept from the test script and created a WebKit/Testing/TestIMS.py test. The PSP patch for IMS still required that the PSP page implement a method CachePSPByModTime. It seems if you need to implement a method such as that, then you should just be able to implement a lastModified method of your own. It might be useful to provide a compiled time to the PSP servlet to assist in this. I am closing this patch, but will pose the question to the devel list for comment. ---------------------------------------------------------------------- Comment By: Ken Lalonde (kenlalonde) Date: 2003-02-21 16:20 Message: Logged In: YES user_id=203927 > Have you any test scripts to verify that the IMS > is working as expected? I've attached a simple script below (test-ims.py) that will verify that a given HTTP server is handling If-Modified-Since as expected. > Also, is there more to the isAuthenticated() method? > It does not appear to be related to IMS. Dang -- that's an internal thing that shouldn't have been part of the patch. Just delete the call and definition. > There are some other issues addressed in the > UnknownFileTypeServlet apparently. Can you provide a > description of changes in functionality here? > It's not clear how much of that is needed. The only essential change to UnknownFileTypeServlet for IMS support is the addition of the lastModified() method. But I think the other changes are worthwhile too: - the file in question is now opened exactly once, and open() failure is handled correctly. - The "CheckDate" config option is no longer used. If found in the cache, the file mtime is always checked against the cached value. The time saved avoiding a stat() call is negligible, and certainly not worth the hassle of returning stale data. - when a cached file changes, the old entry is deleted completely. The old code just updated the cached mtime and content, so files that grow larger than MaxCacheContentSize would still stay in the cache. - the Content-Length HTTP header is set for all requests, not just HEAD. - the changes in HTTPServlet remove the need to add the Last-Modified header. - when sending the data to the client, we send no more than the advertized amount (in case the file has grown), and never loop on early EOF (if it has shrunk). Both cases are unlikely, but better safe... Also, I recommend changing the default value of the CacheContent config setting to 0. Caching file data in memory is a waste of time, since the memory-to-disk bandwidth isn't the bottleneck. The O/S can handle file caching much more efficiently, and if speed is really an issue, you're far better off serving static data outside of WebKit. ---------------------------------------------------------------------- Comment By: Stuart Donaldson (stuartd) Date: 2003-02-20 22:43 Message: Logged In: YES user_id=326269 Ken, Have you any test scripts to verify that the IMS is working as expected? Also, is there more to the isAuthenticated() method? It does not appear to be related to IMS. There are some other issues addressed in the UnknownFileTypeServlet apparently. Can you provide a description of changes in functionality here? It's not clear how much of that is needed. -- Thanks -- ---------------------------------------------------------------------- Comment By: Ken Lalonde (kenlalonde) Date: 2003-02-14 13:41 Message: Logged In: YES user_id=203927 Here is a third version of the patch, against today's CVS. The PSP caching is now off by default, to avoid breaking existing code. I've added a patch to mod_webkit2. The patch to UnknownFileTypeServlet includes changes made in the meantime. ---------------------------------------------------------------------- Comment By: Ken Lalonde (kenlalonde) Date: 2002-09-23 13:14 Message: Logged In: YES user_id=203927 Here is an improved version of the above patch. This version moves the If-Modified-Since logic up to the HTTPServlet level, so it may be used by other factories. I've modified PSP so that "static" PSP pages may be cached at the client. ("Static" pages are those that don't use any dynamic PSP hooks.) There's also a fix to a typo in Session.py. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=304866&aid=608957&group_id=4866 ------------------------------------------------------- This SF.net email is sponsored by: SlickEdit Inc. Develop an edge. The most comprehensive and flexible code editor you can use. Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial. www.slickedit.com/sourceforge _______________________________________________ Webware-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-devel