Re: [squid-users] How do I clear the cache database without stopping squid?
On 06/21/2013 03:26 PM, Eliezer Croitoru wrote: On 06/21/2013 02:45 PM, Daniele Segato wrote: Hi, is there a way to clear the cache without stopping / rebooting squid? I usually stop squid, remove the caches from the filesystem (rm -rf /path/where/the/cache/is), restart squid. Is there a way to clear that cache without the restart? Thanks, Daniele Segato you can do a small tick if you want to just reload down times. change the conf file to no cache_dir at all. reload squid then erase manually the cache_dir. after that just run another squid.conf file with the settings of the cache_dir in it with a -z option. squid -f /etc/squid/squid_res.conf -z now you got squid running with no shutdown but without cache_dir. The cache dir also was erased and initialized. you only need to change back the original conf file and then reload the settings again. Hope the recipe will help you. Eliezer I see, wouldn't it be the same to restart only once with a different cache_dir ? next question: can I change the cache dir with an environment variable? I'm using Jenkins to do release, so I had to automate it and remove down-time. Ideally it should be no downtime. thank you sorry for the late response regards, Daniele Sesgato
[squid-users] How do I clear the cache database without stopping squid?
Hi, is there a way to clear the cache without stopping / rebooting squid? I usually stop squid, remove the caches from the filesystem (rm -rf /path/where/the/cache/is), restart squid. Is there a way to clear that cache without the restart? Thanks, Daniele Segato
[squid-users] Squid Accellerator with ethernal cache for fault tollerance
Hi, my need is to have Squid caching request to my server like this: * do NOT bother the server more then once per minute to check if an update is available * if the server return a 500, go into timeout or something like this during an update keep sending the cached resource to the user Ideally I would like to be able to turn off the server for maintenance while the Squid frontend keep returning request. I've been trying to achieve this for a while now without success. Is this possible? Can you address me in the right direction? Thanks. This is my configuration file (included in the main squid.conf): Which currently cache updating every minute but start givin error after that minute if the server is took down. # http://wiki.squid-cache.org/SquidFaq/ReverseProxy # http://www.visolve.com/squid/whitepapers/reverseproxy.php # http://www.howtoforge.com/how-to-set-up-a-caching-reverse-proxy-with-squid-2.6-on-debian-etch # http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch32_:_Controlling_Web_Access_with_Squid http_port localhost:280 accel ignore-cc defaultsite=localhost cache_peer localhost parent 8080 0 no-query originserver no-digest default name=myAccel refresh_all_ims off # IP address of web server #httpd_accel_host 127.0.0.1 # Port of web server #httpd_accel_port 8080 # Forward uncached requests to single host #httpd_accel_single_host on #httpd_accel_with_proxy on #httpd_accel_uses_host_header off acl Safe_ports port 280 http_access deny !Safe_ports acl our_sites dstdomain 127.0.0.1 localhost mobc3.local http_access allow our_sites cache_peer_access myAccel allow our_sites cache_peer_access myAccel deny all #http_access allow all #cache_peer_access myAccel allow all #refresh_pattern /alfresco/service/catalog 0 20% 4320 reload-into-ims ignore-no-cache refresh-ims ignore-reload #refresh_pattern /alfresco/service/stream 0 20% 4320 reload-into-ims ignore-no-cache refresh-ims ignore-reload # do not cache anything but what I tell you #refresh_pattern . 0 20% 0 #hierarchy_stoplist . #never_direct /alfresco/service/catalog #never_direct /alfresco/service/stream # cache services refresh_pattern /alfresco/service/catalog 0 20% 4320 refresh_pattern /alfresco/service/stream0 20% 4320 refresh_pattern /alfresco/service/news 0 20% 4320 # do not cache everything else refresh_pattern . 0 20% 0 # see http://wiki.squid-cache.org/KnowledgeBase/DebugSections #debug_options ALL,3 debug_options 22,3 #debug_options 22,5 Regards, Daniele Segato
[squid-users] Re: Squid 3.1 + Accel conf + ETag = ignoring ETag
On 04/27/2012 07:50 PM, Daniele Segato wrote: Hi, I'm experimenting with squid and a service I'm writing. my service compute ETag and return it along with other Http header But squid is not sending me the "If-None-Match" header I have situation where the Last-Modified date doesn't change, the ETag work in identifying what's a 304 and what's not. The last modified date check fails there (give 304 when the content has been actually modified). So I need squid to give me If-None-Match is there some config to enable? Am I doing something wrong? Apparently I'm hitting bug: http://bugs.squid-cache.org/show_bug.cgi?id=2112 opened since 2007.. I don't see any chance of seen it resolved anytime soon (and I wouldn't be able to upgrade squid to the last version anyway). so, can you suggest any workaround? thanks
Re: [squid-users] Squid Reverse Proxy (accel) always contacting the server
On 04/01/2012 03:21 AM, Amos Jeffries wrote: Other useful things to know; Generating an ETag label for each unique output helps caches detect unique versions without timestamp calculations. The easy ways to do this are to make ETag a MD5 hash of the body object. Or a hash of the Last-Modified timestamp string if the body is too expensive to locate MD5 for. Or some other property of the resource which is guaranteed to change any time the body changes and not otherwise. As I told you this was my successive step. I implemented ETag, working perfectly fine now by computing the MD5 of the content before formatting it it's the MD5 of the actual Data that I use to obtain the response (which can be Json, XML, Html, ...). But I have issues with Squid not sending me the ETag in If-None-Modified request header, I created another topic here in the list: "Squid 3.1 + Accel conf + ETag = ignoring ETag" to discuss this. Cache-Control:stale-while-revalidate tells caches to revalidate, but not to block the client response waiting for that validation to finish. Clients will get the old object until a new one or 304 is received back. I can't use this yet because I have an older version of Squid but thank you, I'll use it as soon as my production Linux distribution update Squid. bye
[squid-users] Squid 3.1 + Accel conf + ETag = ignoring ETag
Hi, I'm experimenting with squid and a service I'm writing. my service compute ETag and return it along with other Http headers: Headers returned by a request to my service: HTTP/1.1 200 OK Content-Language: it Cache-Control: public, max-age=60, s-maxage=60 ETag: "32b71ecde17592a1d6ef696f5ae78216" Last-Modified: Fri, 27 Apr 2012 14:09:08 GMT Date: Fri, 27 Apr 2012 17:43:52 GMT Vary: Accept, Accept-Language Age: 0 Content-Type: application/json;charset=UTF-8 Content-Length: 932 Server: Jetty(6.1.21) here's what's happen if I pass If-Modified-Since: Fri, 27 Apr 2012 14:09:08 GMT HTTP/1.1 304 Not Modified Content-Language: it Cache-Control: public, max-age=60, s-maxage=60 ETag: "32b71ecde17592a1d6ef696f5ae78216" Last-Modified: Fri, 27 Apr 2012 14:09:08 GMT Date: Fri, 27 Apr 2012 17:44:49 GMT Vary: Accept, Accept-Language Age: 0 Content-Type: application/json;charset=UTF-8 Content-Length: 932 Server: Jetty(6.1.21) And if pass: If-None-Match: "32b71ecde17592a1d6ef696f5ae78216" HTTP/1.1 304 Not Modified Content-Language: it Cache-Control: public, max-age=60, s-maxage=60 ETag: "32b71ecde17592a1d6ef696f5ae78216" Last-Modified: Fri, 27 Apr 2012 14:09:08 GMT Date: Fri, 27 Apr 2012 17:46:20 GMT Vary: Accept, Accept-Language Age: 0 Content-Type: application/json;charset=UTF-8 Content-Length: 932 Server: Jetty(6.1.21) Nothing special... But squid is not sending me the "If-None-Match" header I have situation where the Last-Modified date doesn't change, the ETag work in identifying what's a 304 and what's not. The last modified date check fails there (give 304 when the content has been actually modified). So I need squid to give me If-None-Match is there some config to enable? Am I doing something wrong? thanks, Daniele
Re: [squid-users] Squid Reverse Proxy (accel) always contacting the server
On 04/02/2012 02:04 AM, Amos Jeffries wrote: yes I experimented.. I think 60 seconds is perfect for max-age and I get rid of Expires time, it's overridden by the max-age anyway. For Squid-3.1+ yes that is true, older HTTP/1.0 software only obeys Expires:. So it is a matter of whether you want to further leverage any old software caches around the 'Net your users might be behind. good to know! I don't need support for old HTTP/1.0 but I'll keep it in mind, thanks that's really interesting but I didn't find anything about it here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html is it standard? Yes. http://tools.ietf.org/html/rfc5861 NP: Squid-3 is not obeying it properly yet, but other caches around the 'Net do. So its incrementally useful already and when we roll it into Squid the gain will be immediate wherever its used. I wonder why the w3c doesn't list it. thanks! I'll integrate it as soon as possible when you say squid3 do not obey properly to it what do you exactly mean? Cache-Control:stale-if-error=N, also documented in RFC 5861. Squid-3.2 obey this one already. Sorry, no 3.1 support. our squid3 production server is a 3.1 but I'll implement it so that it comes to work when we upgrade it! thanks again, you've been of great help. http://wiki.squid-cache.org/KnowledgeBase/DebugSections perfect! ciao, Daniele
Re: [squid-users] Re: Squid Reverse Proxy (accel) always contacting the server
On 04/02/2012 03:22 AM, Amos Jeffries wrote: Last-Modified: Cache-Control: public, max-age=60 60 = 60 seconds, means: squid please do not bother the server for 60 seconds after this reply, even if they ask for "If-Modified-Since" Small correction: means don't ask again until 60 seconds from Last-Modified. If Last-Modified is missing or invalid, 60 seconds from Date:. that's not what I've seen I returned Last-Modified (very old), Date: "now" and max-age: 60 squid3 is not checking the server again for 1 minute, then when it does it keep replying without checking the server for another 1 minute and so on. Is it because I specified Age: 0 and Date now? I also added Age: 0 (i tell squid that I'm providing a fresh content). And Date: with the current date, I think this also tells squid the content is fresh not sure those are needed but probably helps. Tells when the response was generated, in case of transfer delays. Acts as a backup for Last-Modified as above, and a value to synchronise Expires: comparisons between proxies and servers despite any clock difference problems. My server return Age:0 and Date: "now" that should do right? On the squid size I configured the refresh_pattern 0 20% 4320 without adding any other option, this was perfectly fine. refresh_pattern provides default values for max-age / min-age and next revalidate time if none are provided by the combination of cache control headers discussed above. When Expires: or Cache-Control: are sent refresh_pattern value is not used. In the log it say: 2012/04/02 07:35:47.326| refreshCheck: Matched '/alfresco/service/stream 0 20%% 259200' are you saying this is ignored? I tried by setting that rule with 0 %20 0 and I had all TCP_MISS so apparently the rule "win" against the http headers. or maybe I misunderstood you :) thanks again, Daniele
Fwd: Re: [squid-users] Squid Reverse Proxy (accel) always contacting the server
(re-send, sent off-list as a mistake) On 04/01/2012 03:21 AM, Amos Jeffries wrote: revalidation is more of a threshold which gets set on each object. Under the threshold no valdation takes place, above it every request gets validated. BUT ... a 304 response revalutating the object can change the threshold by sending new timestamp and caching headers. Thank you I now managed to do exactly what I need... I still have 2 little issues but I'll open another thread for those :) you've been very helpful You have the two options of max-age or Expires. The thing to remember is to increment the value / threshold forward to the next poitn where you want revalidation to take place. with a max-age N value which you generate dynamically by: calculate current age of object when responding, add 60. with Expires: you simply emit a timestamp of now() + 60 seconds on each response. yes I experimented.. I think 60 seconds is perfect for max-age and I get rid of Expires time, it's overridden by the max-age anyway. I also set up Vary and Last-Modified headers. And added age (always 0) and Date (always "now") on my server response. Squid3 is now caching perfectly my RESTfull service (GET) Other useful things to know; Generating an ETag label for each unique output helps caches detect unique versions without timestamp calculations. The easy ways to do this are to make ETag a MD5 hash of the body object. Or a hash of the Last-Modified timestamp string if the body is too expensive to locate MD5 for. Or some other property of the resource which is guaranteed to change any time the body changes and not otherwise. Yeah, that's would be the next step, but it's a little complicated for me to extract something that makes sense as an ETag, when I'll be able I will Cache-Control:stale-while-revalidate tells caches to revalidate, but not to block the client response waiting for that validation to finish. Clients will get the old object until a new one or 304 is received back. that's really interesting but I didn't find anything about it here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html is it standard? thanks do you, by any chance, know how to tell the cache to return a stale value if the server is not responsive and while waiting it comes back online? this would be wonderful because it would allow me to take down the server for maintenance without having a service interruption. 2) which is the best way to debug why squid3 is deciding to keep a cache entry, contact the server or not? looking at the huge debug log is not very simple maybe some log option to filter it with the cache decisions informations only would help debug_options 22,3 ... or maybe 22,5 if there is not enough at level 3. perfect!!! where can I find a list of sections id and their meaning?
[squid-users] Re: Squid Reverse Proxy (accel) always contacting the server
On 03/30/2012 01:47 AM, Daniele Segato wrote: Hi, This is what I want to obtain: Environment: * everything on the same machine (Debian GNU\Linux) * server running on tomcat, port 8080 * squid running on port 280 * client can be anywhere, but for now it's on the localhost machine too I want to set up an http cache to my tomcat server to reduce the load on it. [...] Instead squid is ALWAYS requiring the resource to the server: $ curl -v -H 'If-Modified-Since: Thu, 29 Mar 2012 22:14:20 GMT' 'http://localhost:280/alfresco/service/catalog/products' To help others who stumble into this issue. On your server: Make sure you are formatting your response http headers correctly (I had a Last-Modified date formatting which wasn't compliant to the RFC2822 and was writing + in the place of GMT, resulting in squid always returning TCP_MISS) I provided this http headers in response: Last-Modified: Cache-Control: public, max-age=60 60 = 60 seconds, means: squid please do not bother the server for 60 seconds after this reply, even if they ask for "If-Modified-Since" I also added s-maxage but probably it's not needed unless you want to cache authenticated contents. Vary: This is very important if you are providing a different result by request headers (for example a content in English for Accept-Language: en, and a content in Italian for Accept-Language: it) I also added Age: 0 (i tell squid that I'm providing a fresh content). And Date: with the current date, I think this also tells squid the content is fresh not sure those are needed but probably helps. On the squid size I configured the refresh_pattern 0 20% 4320 without adding any other option, this was perfectly fine. I hope this will help anybody else with this issue :) Squid is great! and allowed me to provide a very responsive and scalable service out of a simple non-clustered server regards, Daniele
Re: [squid-users] Squid Reverse Proxy (accel) always contacting the server
On 03/31/2012 05:01 PM, Daniele Segato wrote: On 03/31/2012 10:13 AM, Amos Jeffries wrote: max-age The max-age response directive indicates that the response is to be considered stale after its age is greater than the specified number of seconds. " The logic goes like this: Object modified ... 22:14:20 Valid +3600 ==> fresh until 23:14:50 Current time: 23:27:57 23:14:50 < 23:27:15 ==> currently stale. must revalidate. Expires header can be used to set an absolute time for invaldation. max-age is relative to age. Ok I think I now understood you... you are saying that max-age is added to "last modified date" but that doesn't make much sense to me. If the server (parent cache) is returning the content at 23:27:00 saying max-age 3600 I would expect that 3600 start from "now". anyway, I thought about this before and I also tried to modify the content, then immediately giving two request to squid. apparently this was caused by a mistake I did with the server (see below) this time, suppose: Object modified ... 00:00:00 Valid +3600 ==> fresh until 01:01:00 Current time: 00:05:00 01:01:00 > 00:05:00 ==> currently fresh. shouldn't bother the server. instead what's actually happening is that squid is doing a request to my server, only header, but it's still doing it. My server, to compute the "Last-Modified" date has to do all the job of collecting the data, looping to each data element and extract, for each, the last modified date, then compute the "last one".. it build a "model" that is then rendered: it's pretty short anyway since it's gzipped text. So the big work of my server is to collect the data, and my server have to do it both if you do a GET both if you do an HEAD request. I would like squid to revalidate with my server every, say 1 minute, even 10 seconds is ok.. but it shouldn't revalidate every single request it is receiving. I hope I made my point. this question is still in place :) I wanted to give you an example but now squid is always giving me a TCP_MISS this was my mistake, the Last-Modified date format was wrong from server :) please ignore the debug and everything behind this point in my previous email... Now it's giving cache hits in ram! I think I can summarize my question in this two questions: 1) can I make squid3 update the cache with my server every, say, 1 minute (at most) but use it's cache otherwise without bothering the server (not even for headers)? how? Avoiding to call the server for 1 hour, I think, it's a bit too much: the content can change in the meanwhile and I don't want the user to wait 1 hour for it. On the other part I don't want every single request after that hour is pass to see squid contacting my server to check if the last modified date is changed. 2) which is the best way to debug why squid3 is deciding to keep a cache entry, contact the server or not? looking at the huge debug log is not very simple maybe some log option to filter it with the cache decisions informations only would help Thanks and sorry for the previous message
Re: [squid-users] Squid Reverse Proxy (accel) always contacting the server
On 03/31/2012 10:13 AM, Amos Jeffries wrote: On 30/03/2012 12:47 p.m., Daniele Segato wrote: Instead squid is ALWAYS requiring the resource to the server: $ curl -v -H 'If-Modified-Since: Thu, 29 Mar 2012 22:14:20 GMT' 'http://localhost:280/alfresco/service/catalog/products' * About to connect() to localhost port 280 (#0) * Trying 127.0.0.1... * connected * Connected to localhost (127.0.0.1) port 280 (#0) GET /alfresco/service/catalog/products HTTP/1.1 User-Agent: curl/7.24.0 (x86_64-pc-linux-gnu) libcurl/7.24.0 OpenSSL/1.0.0h zlib/1.2.6 libidn/1.24 libssh2/1.2.8 librtmp/2.3 Host: localhost:280 Accept: */* If-Modified-Since: Thu, 29 Mar 2012 22:14:20 GMT * additional stuff not fine transfer.c:1037: 0 0 * HTTP 1.0, assume close after body < HTTP/1.0 304 Not Modified < Date: Thu, 29 Mar 2012 23:27:57 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Thu, 29 Mar 2012 22:14:20 GMT " max-age The max-age response directive indicates that the response is to be considered stale after its age is greater than the specified number of seconds. " The logic goes like this: Object modified ... 22:14:20 Valid +3600 ==> fresh until 23:14:50 Current time: 23:27:57 23:14:50 < 23:27:15 ==> currently stale. must revalidate. Expires header can be used to set an absolute time for invaldation. max-age is relative to age. Hi amos, My content has been lastly modified at 22:14:20. But I did two successive request, one at 23:27:00, one at 23:27:20 the first one: 23:27:00 was a cache miss the second is what you see above. you are saying that max-age is added to "last modified date" but that doesn't make much sense to me. If the server (parent cache) is returning the content at 23:27:00 saying max-age 3600 I would expect that 3600 start from "now". anyway, I thought about this before and I also tried to modify the content, then immediately giving two request to squid. this time, suppose: Object modified ... 00:00:00 Valid +3600 ==> fresh until 01:01:00 Current time: 00:05:00 01:01:00 > 00:05:00 ==> currently fresh. shouldn't bother the server. instead what's actually happening is that squid is doing a request to my server, only header, but it's still doing it. My server, to compute the "Last-Modified" date has to do all the job of collecting the data, looping to each data element and extract, for each, the last modified date, then compute the "last one".. it build a "model" that is then rendered: it's pretty short anyway since it's gzipped text. So the big work of my server is to collect the data, and my server have to do it both if you do a GET both if you do an HEAD request. I would like squid to revalidate with my server every, say 1 minute, even 10 seconds is ok.. but it shouldn't revalidate every single request it is receiving. I hope I made my point. I wanted to give you an example but now squid is always giving me a TCP_MISS # squid3 -k debug && curl -v 'http://localhost:280/alfresco/service/catalog/products'; squid3 -k debug * About to connect() to localhost port 280 (#0) * Trying 127.0.0.1... * connected * Connected to localhost (127.0.0.1) port 280 (#0) > GET /alfresco/service/catalog/products HTTP/1.1 > User-Agent: curl/7.24.0 (x86_64-pc-linux-gnu) libcurl/7.24.0 OpenSSL/1.0.0h zlib/1.2.6 libidn/1.24 libssh2/1.2.8 librtmp/2.3 > Host: localhost:280 > Accept: */* > * additional stuff not fine transfer.c:1037: 0 0 * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Date: Sat, 31 Mar 2012 14:53:51 GMT < Content-Language: en_US < Cache-Control: public, max-age=3600 < Last-Modified: Sat, 31 Mar 2012 14:03:55 + < Vary: Accept, Accept-Language < Content-Type: application/json;charset=UTF-8 < Content-Length: 1668 < Server: Jetty(6.1.21) < X-Cache: MISS from localhost < X-Cache-Lookup: MISS from localhost:280 < Via: 1.0 localhost (squid/3.1.19) * HTTP/1.0 connection set to keep alive! < Connection: keep-alive in the debug log I see: 2012/03/31 16:53:51.696| getDefaultParent: returning localhost 2012/03/31 16:53:51.696| peerAddFwdServer: adding localhost DEFAULT_PARENT 2012/03/31 16:53:51.696| peerSelectCallback: http://localhost/alfresco/service/catalog/products 2012/03/31 16:53:51.696| fwdStartComplete: http://localhost/alfresco/service/catalog/products 2012/03/31 16:53:51.696| fwdConnectStart: http://localhost/alfresco/service/catalog/products 2012/03/31 16:53:51.696| PconnPool::key(flexformAccel,8080,localhost,[::]is {flexformAccel:8080/localhost} 2012/03/31 16:53:51.696| PconnPool::pop: found myfAccel:8080/localhost(to use) [...] 2012/03/31 16:53:52.159| mem_hdr::write: [249,251) object end 249 2012/03/31 16:53:52.159| storeSwapOut: http://localhost/alfresco/service/catalog/products 2012/03/31 16:53:52.159|
[squid-users] Squid Reverse Proxy (accel) always contacting the server
Cache... 2012/03/30 01:32:22| DNS Socket created at [::], FD 7 2012/03/30 01:32:22| DNS Socket created at 0.0.0.0, FD 8 2012/03/30 01:32:22| Adding nameserver 192.168.88.254 from /etc/resolv.conf 2012/03/30 01:32:22| Adding nameserver 192.168.1.1 from /etc/resolv.conf 2012/03/30 01:32:22| Unlinkd pipe opened on FD 13 2012/03/30 01:32:22| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec 2012/03/30 01:32:22| Store logging disabled 2012/03/30 01:32:22| Swap maxSize 0 + 262144 KB, estimated 20164 objects 2012/03/30 01:32:22| Target number of buckets: 1008 2012/03/30 01:32:22| Using 8192 Store buckets 2012/03/30 01:32:22| Max Mem size: 262144 KB 2012/03/30 01:32:22| Max Swap size: 0 KB 2012/03/30 01:32:22| Using Least Load store dir selection 2012/03/30 01:32:22| Set Current Directory to /var/spool/squid3 2012/03/30 01:32:22| Loaded Icons. 2012/03/30 01:32:22| Accepting accelerated HTTP connections at 127.0.0.1:280, FD 14. 2012/03/30 01:32:22| Accepting HTTP connections at [::]:3128, FD 15. 2012/03/30 01:32:22| HTCP Disabled. 2012/03/30 01:32:22| Configuring Parent 127.0.0.1/8080/0 2012/03/30 01:32:22| Squid plugin modules loaded: 0 2012/03/30 01:32:22| Adaptation support is off. 2012/03/30 01:32:22| Ready to serve requests. 2012/03/30 01:32:23| storeLateRelease: released 0 objects and the access.log while issue some request: 1. GET without any other header 1333064055.374454 127.0.0.1 TCP_MISS/200 1519 GET http://localhost/alfresco/service/catalog/products - FIRST_UP_PARENT/myAccel application/json 2. GET without any other header (again) 1333064061.343645 127.0.0.1 TCP_REFRESH_UNMODIFIED/200 1517 GET http://localhost/alfresco/service/catalog/products - FIRST_UP_PARENT/myAccel application/json 3. GET with If-Modified-Since header 1333064068.956397 127.0.0.1 TCP_REFRESH_UNMODIFIED/304 369 GET http://localhost/alfresco/service/catalog/products - FIRST_UP_PARENT/myAccel application/json please help me, I think I did what's in http://wiki.squid-cache.org/SquidFaq/ReverseProxy but this is not working and I lost too much time on the issue already trying to read and experimenting on my own. If I manage to make it work the next step is to make the cache work only on /alfresco/service path on the service, any path including query string ?key=value... but for now I would be happy to solve this particular issue. I also enabled full logging on squid3 to understand what's happening, this is the log for the second request above (without any header): http://pastebin.com/GhazwHCr (too big to include in this email) if you need any other information I would gladly provide it. Thank you very much, Regards, Daniele Segato