Squid可以用refresh_pattern参数设置缓存文件的过期时间.语法如下:
refresh_pattern [-i] regex min percent max [options]
Min与max单位为分钟
如果想精确设置过期时间,中间的percent最好不要使用.例如缓存5分钟过期的话,可以设置参数如下: refresh_pattern -i regex 5 0% 5
Age < min 新鲜
Age > max 过期
Lm-factor < percent 新鲜
Age与lm-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.
转载于:https://blog.51cto.com/jianhui1989/747108