Thibault Ketterer wrote:
I squid-users, I am trying to cache some jar from java web start. I augmented the cache_dir size to match the jar size and I tuned the refresh_pattern parameter for jar file like this : cache_dir ufs /local/squid 1000 16 256 refresh_pattern -i \.jar$ 0 100% 1440 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth But squid won't cache the jar file. In the store.log : 1237561956.490 RELEASE 00 00000085 982C3FB51B721FD777E121DF5C23653C 200 1237561059 1237455030 -1 application/java-archive 38363415/16182969 GET http://server_IP:8080/superviseurUcte/gsrAppSigne.jar Squid seem to release it as soon as it get it, but why ? Furthermore if a download the jar file with a python request, containing apparently the same options, squid caches it. in the store.log 1237479895.109 SWAPOUT 00 00000009 95484B2D4855572C7835C663D0871C0D 200 1237479005 1237455702 -1 application/java-archive 37531320/37531320 GET http://server_IP:8080/superviseurUcte/gsrAppSigne.jar Then If I refresh the jar with javaws, squid uses its cache. But if I change the jar, again javaws -> never goes into cache python -> cache I used wireshark to capture the request packets : === the packet which caches (python) Frame 1 (502 bytes on wire, 502 bytes captured) Ethernet II, Src: HewlettP_46:97:c4 (00:1a:4b:46:97:c4), Dst: Ibm_d8:40:5c (00:14:5e:d8:40:5c) Internet Protocol, Src: source_IP (source_IP), Dst: proxy_IP (proxy_IP) Transmission Control Protocol, Src Port: 39047 (39047), Dst Port: squid (3128), Seq: 0, Ack: 0, Len: 448 Hypertext Transfer Protocol GET http://server_IP:8080/superviseurUcte/gsrAppSigne.jar HTTP/1.1\r\n content-type: application/x-java-archive\r\n accept-encoding: pack200-gzip,gzip\r\n User-Agent: JNLP/6.0 javaws/1.6.0_01 (b06) Java/1.6.0_01\r\n UA-Java-Version: 1.6.0_01\r\n Host: server_IP:8080\r\n Cache-Control: no-cache\r\n Pragma: no-cache\r\n Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n Proxy-Connection: keep-alive\r\n If-Modified-Since: Wed, 31 Dec 1969 23:59:59 GMT\r\n \r\n
This request is determined to NOT get get a cached copy of this file. Cache-control: no-cache, Pragma: no-cache, If-Modified-Since Dec 1969... But the request only affects whether the request is satisfied from cache. Whether or not the object is cached at all is (in part) determined by the server's response.
=== the packet which won't cache (java web start) Frame 4 (502 bytes on wire, 502 bytes captured) Ethernet II, Src: HewlettP_46:97:c4 (00:1a:4b:46:97:c4), Dst: Ibm_d8:40:5c (00:14:5e:d8:40:5c) Internet Protocol, Src: source_IP (source_IP), Dst: proxy_IP (proxy_IP) Transmission Control Protocol, Src Port: 39003 (39003), Dst Port: squid (3128), Seq: 0, Ack: 0, Len: 448 Hypertext Transfer Protocol GET http://server_IP:8080/superviseurUcte/gsrAppSigne.jar HTTP/1.1\r\n content-type: application/x-java-archive\r\n accept-encoding: pack200-gzip,gzip\r\n User-Agent: JNLP/6.0 javaws/1.6.0_01 (b06) Java/1.6.0_01\r\n UA-Java-Version: 1.6.0_01\r\n Host: server_IP:8080\r\n Cache-Control: no-cache\r\n Pragma: no-cache\r\n Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n Proxy-Connection: keep-alive\r\n If-Modified-Since: Wed, 31 Dec 1969 23:59:59 GMT\r\n \r\n I can join the python source, but for the javaws it is another story, I don't know if it uses some special TCP option or something that forces squid to not put the jar file in its cache... Any advice will be greatly apprecied ! -- Thibault ketterer
Chris