Recently while doing some cacheability testing on a few different proxy caches, we found some strange behavior with Apache 1.3.14 and Delegate 7.3.1. We discovered this initially when doing some simple tests with Web Polygraph to drive some simultaneous proxy evaluation tests. Polygraph returned errors to us, saying that uncacheable resources had been served from cache.
I'm still pinning down the exact scenario for these problems (which appear differently on apache and delegate). However, I have been able to regularly (but not consistently) reproduce the problem with some pretty basic client and server code.
The server code is a short c program that I run as a CGI and just returns the time -- seconds and microseconds since the epoch, and sets pragma: no-cache and cache-control: no-cache, private. I serve this cgi on another apache 1.3.14.
The client code is a forking perl script that retrieves the same url 20 times on each thread. I'm sure this script is suboptimal for forcing this problem.
| When I try this combination, the perl script will generally interleave reasonably well -- i.e. each process will take turns. Here is a sample of the output when talking to apache that the client generates. As you can see, some of the responses are identical, and when I check the Apache origin server logs, I find that only 36 requests were made (compared to the 40 responses received by the client). | On delegate, the perl script doesn't interleave well -- generally retrieving 20 times via one process, then 20 times via another process. This in itself is probably a performance bug, but I'm not worried about it. Here is a sample of the output when talking to delegate that the client generates. As you can see, many of the responses are identical. However, when I check the Apache origin server logs, I find that 40 requests were made -- but Apache returns 304 in a number of cases. Thus, it appears that Delegate is sending GET IMS requests (which should be a bug, given the uncacheability of the resource). I'm not sure yet whether the Apache web server also has a bug in serving 304 responses for CGI -- I haven't looked into that yet. |
I'll continue to update this page as I find out more information, but I have time constraints, which is why there are unanswered questions above...
Please feel free to contact me (Brian D. Davison) by email: davison (at) cs.rutgers.edu.