cache-control有哪些属性?
其作用根据不同的重新浏览方式分为以下几种情况:cache-control
打开新窗口(_blank)
private、no-cache、must-revalidate 再次访问服务器Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不 会去服务器)
在地址栏回车值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。值为no-cache,那么每次都会访问。值为max-age,则在过期之前不会重复访问。
按后退按扭值为private、must-revalidate、max-age,则不会重访问,值为no-cache,则每次都重复访问
按刷新按扭无论为何值,都会重复访问
cache-control在哪里设置
在IIS的网站属性中的http头信息选项卡中,勾选启用内容过期后有三个相关选项.
一、立即过期
启用此选项后,每次请求都会向服务器申请下载最新版本。浏览器不做缓存处理。状态返回码200。Cache信息是:no-cache。这种方式可以保证客户端看到的永远是最新版本,也就是说如果服务器端进行了更新,一定能被客户端看到。
二、此时段后过期与过期时间
这两种情况下,浏览器缓存将其作用。注意,第一次的状态是200,同时cache-control为30天(对应的秒数)。就是说这个网页会有30天的缓存。所以,而后的状态都会是304.
cache-control应该怎么设置更好?
对于图片,css,等长期不变化的内容应该设置较长的过期时间(如180天)
建议:
1.对于js和css可以独立到一个二级域名中,启用GZIP,且设置较长的过期时间
2.对于图片独立到另一个二级域名中,且设置较长的过期时间
对于静态文件(html)如果长期不更新也可以设置稍长的过期时间(如30天),需要根据当前网站的实际而定。
对于动态文件(php)可以设置较短的过期时间(如120秒)
注意:在过期时间内,如果您对文件内容进行了变化,对于用户或蜘蛛都不能浏览或抓取到你更改后的内容。 这也是动态文件设置较短过期时间的主要原因。cache-control的设置只是为了节约搜索引擎蜘蛛资源,让其抓取更多有效内容,千万不能弄巧成拙。
禁用客户端缓存HTM网页
<METAHTTP-EQUIV="pragma"
CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"
CONTENT="no-cache,must-revalidate">
<META
HTTP-EQUIV="expires"CONTENT="Wed,26Feb199708:21:57
GMT">
ASP网页
<%
Response.Expires=
-1
Response.ExpiresAbsolute=Now()-1
Response.cachecontrol="no-cache"
%>
PHP网页
header("Expires:Mon,26Jul199705:00:00GMT")
header("Cache-Control:no-cache,must-revalidate")
header("Pragma:no-cache")
JSP
response.setHeader("Pragma","No-Cache")
response.setHeader("Cache-Control","No-Cache")
response.setDateHeader("Expires",0)
C#中禁止cache的方法!
Response.Buffer=true
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1)
Response.Expires=0
Response.CacheControl="no-cache"
加入
<MEATHTTP-EQUIV="Pragma"
CONTENT="no-cache">
不缓存。
一、Expires(期限)
说明:可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅。
用法:<METAHTTP-EQUIV="expires"CONTENT="Wed,26Feb1997
08:21:57GMT">
注意:必须使用GMT的时间格式。
二、Pragma(cache模式)
说明:禁止浏览器从本地机的缓存中调阅页面内容。
用法:<META
HTTP-EQUIV="Pragma"CONTENT="no-cache">
注意:这样设定,访问者将无法脱机浏览。
三、脚本实现
<%
response.expires=0
response.expiresabsolute=now()
-1
response.addHeader"pragma","no-cache"
response.addHeader"cache-control","private"
Response.cachecontrol="no-cache"
%>
IE浏览器访问一个网页的时候,首先会到临时文件夹中去寻找和这个网页相关的各个文件(如各种图片)。如果在临时文件夹中找到了一些文件,那么浏览器就会使用这些临时文件夹中的文件,而不去服务器下载这些文件。
不幸的是,我的服务器上的文件是经常变化的,如果IE优先考虑临时文件夹中的文件,那么就不能反映出我服务器上的变化。
现在有两个解决办法,但都有缺陷:
一是使用网页的自刷新,但是刷新速度快的话会有闪烁,不符合我其他方面的要求。
二是在IE设置中设成“每次访问此页时检查”。此时IE不考虑临时文件夹中的内容,直接从服务下载各个文件。但是这种办法需要用户进行设置,对用户来说有点麻烦。而且这样的设置会影响用户访问其他网站的速度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)