On 02.04.2012 07:35, Daniele Segato wrote:
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.


With a few extra notes...

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 +0000 in the place of GMT, resulting in squid
always returning TCP_MISS)

I provided this http headers in response:

Last-Modified: <date here, should change when the content change>
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:.


I also added s-maxage but probably it's not needed unless you want to
cache authenticated contents.

Vary: <request header that may vary your response>
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.

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.



On the squid size I configured the refresh_pattern <regex> 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.


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

Reply via email to