squid中refresh_pattern参数

refresh_pattern指令在squid配置文件中定义,此参数控制着数据在磁盘上缓存的时间。

语法如下:

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

1,regexp:是匹配正则表达式,注意这里是区分大小写的,使用-i选项来定义它忽略大小写

2,min和max:单位是分钟,表示某个响应驻留在squid服务器的cache中的时间没有超过min限制,那么它不会过期,如果高于这个max限制,那么它必须被刷新。

3,percent:[‘Percent‘ is a percentage of the objects age (time since last modification age) an object without explicit expiry time will be considered fresh.]

要理解percent必须要了解LM-factor算法,在Squid.Definitive.Guide中有张图,如下:

last-modified和expires定义可以看下图:(Chrome浏览器按下F12进入调试模式)

这里是一段响应报文首部(我们假设没有经过web缓存服务器,直接由原始服务器返回的数据)

cache-control:HTTP1.1协议中定义,相对时长(相对于自身服务器时间而言)

expires:HTTP1.0中定义,1.1兼容,绝对时间

可以看到cache-control在某种程度上更加精准。

last-modified:表示在原服务器上最后一次页面修改的时间。

LM-factor算法定义:

date表示数据从原服务器进入squid缓存服务器的时间。这里可以看到由percent决定了expires的时间:

expires=date + [ date - (last-modified) ] * percent

所以满足下面两个条件之一,则cache数据过期,用户访问时必须被refresh。

1)缓存的数据在squid服务器中的时间超出refresh_pattern中定义的max值(相对时长)

2)缓存的数据在squid服务器中的时间超出expires的时间(绝对时间)

4,options中有些选项与http协议相违背:

override-expire:用户请求时,squid服务器不会先检查原始服务器响应报文首部expires,而是先检查min,若小于min值,squid会直接返回一个未确认的cache命中。

override-lastmod:该选项导致先检查min,再检查percent。若小于min值,squid会直接返回一个未确认的cache命中。

reload-into-ims:squid在转发请求之前,对该请求增加一个If-Modified-Since头部。

ignore-reload:squid服务器将忽略客户端请求时的no-cache指令。

案例:

refresh_pattern -i \.jpg$ 10080 50% 20160 override-expire ignore-reload reload-into-ims

时间: 2024-10-31 01:26:27

squid中refresh_pattern参数的相关文章

javascript获取当前url中的参数

javascript获取当前页面url中的参数可以使用location的search方法,获取到的是url中?后面的部分,例如http:localhost:8080/Manager/index.jsp?id=1 使用location的search方法可以获取到字符串?id=1;想要获取?后面的键值对可以使用substring方法对其进行截取,截取后获得id=1;需要获得id的值,可以使用split()方法对其进行拆分,拆分表达式为"=".下面看具体例子: window.onload =

ORA-01084: OCI 调用中的参数无效

执行一个Insert语句,系统抛出来的异常是:ORA-01084:OCI调用中的参数无效. 请注意检查Insert字段中是否有clob字段并传入了这样的""空字符串,如果是的话就是问题所在了. 解决方案: 用DbNull代替""赋值. 代码参照: parameters[0].Value = SqlNull(model.ZB_GUID);  public object SqlNull(object obj)        {            if (obj ==

如何获取url中的参数并传递给iframe中的报表

在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数呢?以下用报表软件FineReport简单介绍一些. 具体实现过程 将报表生成页面时,给网页添加onload事件,首先获取url中的参数,然后嫁接到iframe的src上,或者通过获得的参数拼接处完整的报表url赋给iframe的src. <html> <head> <title

js获取url链接中的参数

js获取url链接中的参数:url传递参数这是常识,这里就不多介绍了,既然传递参数就要获取参数的值,下面就介绍一下如何实现此功能.代码如下: function request(paras){ var url="softwhy.com?a=1&b=2"; var paraString=url.substring(url.indexOf("?")+1,url.length).split("&"); var paraObj={} for

【WinRT】获取 Uri 中的参数(QueryString)键值对

在控制台或者其它类型的项目中,可以添加 System.Web,使用以下代码来获取一个 Uri 中的参数 Uri uri = new Uri("http://www.cnblogs.com/h82258652/?gender=male&age=17"); NameValueCollection collection = HttpUtility.ParseQueryString(uri.Query); for (int index = 0; index < collectio

mysqladmin在SuSE linux系统中--sleep参数使用不准确问题

我们都知道,在MySQL中,可以使用mysqladmin命令的extended-status选项来查看MySQL的运行状态,比如获取我们常常关注的几个值: # mysqladmin -uroot -proot ext |grep "Questions\|Queries\|Innodb_rows\|Com_select \|Com_insert \|Com_update \|Com_delete " | Com_delete                               |

大龙的胡思乱想之“filestream中offset参数”

改偏移量之前 using (FileStream fs = new FileStream(txtFilePathRead.Text, FileMode.Open)) { //创建一个容量4M的数组 byte[] byteData = new byte[1024 * 1024 * 4]; //从文件中读取数据写入到数组中(数组对象,从第几个开始读,读多少个) //返回读取的文件内容真实字节数 int length = fs.Read(byteData, 0, byteData.Length );

提取URL的搜索字符串中的参数

1 /*--------------------------------------------------------------------------------* 2 * 功能描述:提取URL的搜索字符串中的参数 3 * 原理:这个函数用来解析来自URL的查询串中的的name=value参数对 4 * 它将name=value对存储在一个对象的属性中,并返回该对象 5 * 测试:已通过 6 * 时间:2016/10/31 7 *------------------------------

[转载]linux下编译php中configure参数具体含义

编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php                      php 安装目录 –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc      指定php.ini位置 –with-mysql=/usr/local