Squid可以用refresh_pattern参数设置缓存文件的过期时间.语法如下:

refresh_pattern [-i] regex min percent max [options]

Minmax单位为分钟

如果想精确设置过期时间,中间的percent最好不要使用.例如缓存5分钟过期的话,可以设置参数如下: refresh_pattern -i regex 5  0%  5

Age < min  新鲜

Age > max 过期

Lm-factor < percent 新鲜

Agelm-factor计算方法:

Age=当前时间-date

Stale-age=(date - last_modfiled)*pct

Age < stale-age  新鲜

Squid会先去比较max,再去比较lm-factor,然后再去比较min.

override-expire参数的用法:

  当源站设置了expire值或者cache-control:max-age参数的时候,如果还让squid强制缓存的话,可以使用此参数忽略源站的expire头参数.squid的缓存时间必须大于expire或者max-age的时间.否则依旧会遵循源站的过期时间.

ignore-no-cache参数的用法:

      当源站设置了no-cache的时候,squid默认不会缓存.想要squid继续缓存的话,就可以用此参数控制.

Ignore-reload

当请求头的header中有no-cache的参数时,squid默认不会给出已缓存的内容,而会回源重新去取内容,强迫cache确认. log日志的信息为:TCP_CLIENT_REFRESH_MISS

Chrome浏览器不但会发送cache-control:max-age=0的请求头,还会携带if-modfiled-since的信息.也会造成squid强迫cache确认.但是log日志信息为:TCP_REFRESH_HIT.

使用ignore-reload参数可以导致squid忽略请求中的任何no-cache.