西瓜视频微信无法联网怎么回事事?

apache配置对页面进行压缩和页面缓存来提升性能_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
apache配置对页面进行压缩和页面缓存来提升性能
上传于|0|0|文档简介
&&apache配置对页面进行压缩和页面缓存来提升性能、
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢博客访问: 142523
博文数量: 26
博客积分: 572
博客等级: 中士
技术积分: 262
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
今天把game的一些组件设置了expire,发现了一个问题,对于同一个操作对象,ExpiresByType比ExpiresDefault优先级高.当expires和max-age同时存在时,max-age的优先级会高于expires.
当你不知道某个文件的MIME类型时,你可以通过浏览器去看httpwatch去看MIME类型.
如果要对某个目录里的某个文件设置Expires头,可以用&filesmatch "正则"&&/filematch&来匹配.
设置缓存也可以通过mod_headers模块修改cache-control来实现.
header set cache-control "max-age="3600".
mod_expires 实例:
&Directory /opt&
&&ExpiresActive On
& ExpiresDefault "accesss plus 3600 seconds"&& 如果是1秒,后面也是seconds
& ExpiresByType application/octet-stream "accesss plus 1 months"& 这是对特殊文件类型bin缓存1个月
&&&FilesMatch ^data.swf$& 针对opt目录下data.swf设置Expire值
&& ExpiresActive On
&& ExpiresDefault "accesss plus&60 seconds"
&&&/FilesMatch&
&/Directory&
mod_headers实例
&Directory /opt&
&&header set cache-control "max-age=3600"
&&&FilesMatch ^data.swf$&
&&header set cache-control "max-age=60"
&&&/FilesMatch&
&/Directory&
阅读(17964) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。Expires、Cache-Control、Last-Modified、ETag是RFC 2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的有效性。要注意的是, HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。我们 这里以Apache2.0服务器为例,只讨论HTTP/1.1协议。
Expires字段声明了一个网页或URL地址不再被浏览器缓存的时间,一旦超过了这个时间,浏览器都应该联系原始服务器。RFC告诉我们:&由于推断的失效时间也许会降低语义透明度,应该被谨慎使用,同时我们鼓励原始服务器尽可能提供确切的失效时间。&
对于一般的纯静态页面,如html、gif、jpg、css、js,默认安装的Apache服务器,不会在响应头添加这个字段。Firefox浏览 器接受到相应后,如果发现没有Expires字段,浏览器根据文件的类型和&Last-Modified&字段来推断出一个合适的失效时间,并存储在客户 端。推测出的时间一般是接受到响应时间后的三天左右。
Apache的expires_module模块可以在Http响应头部自动加上Expires字段。在Apache的httpd.conf文件中进行如下配置:
#启用expires_module模块LoadModule expires_module modules/mod_expires.so# 启用有效期控制ExpiresActive On# GIF有效期为1个月ExpiresByType image/gif A2592000# HTML文档的有效期是最后修改时刻后的一星期ExpiresByType text/html M604800#以下的含义类似ExpiresByType text/css &now plus 2 month&ExpiresByType text/js &now plus 2 day&ExpiresByType image/jpeg &access plus 2 month&ExpiresByType image/bmp &access plus 2 month&ExpiresByType image/x-icon &access plus 2 month&ExpiresByType image/png &access plus 2 month&
对于动态页面,如果在页面内部没有通过函数强制加上Expires,例如header(&Expires: & . gmdate(&D, d M Y H:i:s&) . & GMT&),Apache服务器会把Wed, 11 Jan :00 GMT作为Expires字段内容,返回给浏览器。即认为动态页面总是失效的。而浏览器仍然会保存已经失效的动态页面。
可以发现Firefox浏览器总是缓存所有页面,不管失效、不失效还是没有声明失效时间。即使缓存中声明了一个网页的实效日期是 08:00:00,浏览器仍然会发送该文件在缓存中的Last-Modified和ETag字段。 如果在服务器端验证通过,返回304状态,浏览器就还会使用此缓存。Cache-Control
Cache-Control字段中可以声明多些元素,例如no-cache, must-revalidate, max-age=0等。这些元素用来指明页面被缓存最大时限,如何被缓存的,如何被转换到另一个不同的媒介,以及如何被存放在持久媒介中的。但是任何一个 Cache-Control指令都不能保证隐私性或者数据的安全性。&private&和&no-store&指令可以为隐私性和安全性方面提供一些帮 助,但是他们并不能用于替代身份验证和加密。
Apache的mod_cern_meta模块允许文件级Http响应头部的控制,同时它也可以配置Cache-Control头(或任何其他头)。响应头文件是放在原始目录的子目录中,根据原始文件名所命名的一个文件。具体用法请参阅Apache的官方网站。
其中Cache-Control : max-age表示失效日期。如果没有启动mod_cern_meta模块,Apache服务器会把Expires字段中的日期换算成以秒为单位的一个 delta值,赋值给max-age。如果启动mod_cern_meta模块,并且配置了max-age值,Apache会将这个覆盖Expires字 段。同时,max-age隐含了Canche-Control: public。这样浏览器接受到的Cache-Control : max-age和Expires值就是一致的。
如果失效日期Cache-Control : max-ag=0或者是负值,浏览器会在对应的缓存中把Expires设置为 08:00:00。Last-Modified
Last-Modified和ETag是条件请求(Conditional Request)相关的两个字段。如果一个缓存收到了针对一个页面的请求,它发送一个验证请求询问服务器页面是否已经更改,在HTTP头里面带上& ETag&和&If Modify Since&头。服务器根据这些信息判断是否有更新信息,如果没有,就返回HTTP 304(Not Modify);如果有更新,返回HTTP 200和更新的页面内容,并且携带新的&ETag&和&Last-Modified&。
使用这个机制,能够避免重复发送文件给浏览器,不过仍然会产生一个HTTP请求。
一般纯静态页面本身都会有Last-Modified信息,Apache服务器会读取页面文件中的Last-Modified信息,并添加到http响应头部。
对于动态页面,如果在页面内部没有通过函数强制加上Last-Modified,例如header(&Last-Modified: & . gmdate(&D, d M Y H:i:s&) . & GMT&),Apache服务器会把当前时间作为Last-Modified,返回给浏览器。
无论是纯静态页面还是动态页面,Firefox浏览器巧妙地按照接受到服务器响应的时间设置缓存页面的Last-Modified,而不是按照http响应头部中的Last-Modified字段。
既然有了Last-Modified,为什么还要用ETag字段呢?因为如果在一秒钟之内对一个文件进行两次更改,Last-Modified就会不正确。因此,HTTP/1.1利用Entity Tag头提供了更加严格的验证。
Apache服务器默认情况下,会对所有的静态、动态文件的响应头添加ETag字段。
在Apache的httpd.conf文件中可以通过FileETag指令配置该选项。FileETag指令配置了当文档是基于一个文件时用以创建 Etag(entity tag)响应头的文件的属性。在Apache 1.3.22及以前,ETag的值是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。 如果一个目录的配置包含了&FileETag INode MTime Size&而其一个子目录包含了&FileETag -INode&那么这个子目录的设置(并会被其下任何没有进行覆盖的子目录继承)将等价于&FileETag MTime Size&。
在多台负载平衡的服务器环境下,同一个文件会有不同的etag或者文件修改日期,浏览器每次都会重新下载。设置&FileETag None&可以使响应头不再包含ETag字段。
Views(...) Comments() &☉&&( 11:26:22)☉&&( 22:5:9)
Powered By
Designed by Han'space26818人阅读
首先分享一下CI中文件强制下载时的header设置。
if (strpos($_SERVER['HTTP_USER_AGENT'], &MSIE&) !== FALSE)
header('Content-Type: &'.$mime.'&');
header('Content-Disposition: filename=&'.$filename.'&');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header(&Content-Transfer-Encoding: binary&);
header('Pragma: public');
header(&Content-Length: &.strlen($data));
header('Content-Type: &'.$mime.'&');
header('Content-Disposition: filename=&'.$filename.'&');
header(&Content-Transfer-Encoding: binary&);
header('Expires: 0');
header('Pragma: no-cache');
header(&Content-Length: &.strlen($data));
}其他的都比较好理解,主要是关于Cache-control和Pragma的设置让人比较迷惑。
关于Cache-Control的must-revalidate:强制页面不缓存,作用与no-cache相同,但更严格,强制意味更明显。详细作用请参考:
关于post-check和pre-check:Internet Explorer 5对于HTTP头信息使用两种新的时间间隔指示:pre-check 和post-check。pre-check扩展名定义了这样一段时间间隔(以秒记):即在这段时间间隔之后,一个对象在显示给用户之前应被选中进行更新。选中对象也可以发生在该对象已经显示给用户之后,但是,要保证在用户下次想要看这个对象时,被高速缓存起来的副本是更新过的。post-check扩展名定义了这样一段时间间隔(以秒记):即在这段时间之后,在显示给用户之前,该对象被选中进行更新。即post-check=0,pre-check=0是IE5.0才有的防cache声明。(参考自和)
关于Pragma:no-cache,跟Cache-Control: no-cache相同。Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。因此,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.
关于Pragma:public 作用未知,还请阅读本篇文章的各位大侠给予解释。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:135057次
积分:1341
积分:1341
排名:千里之外
原创:18篇
评论:16条
(1)(1)(1)(3)(1)(3)(2)(1)(1)(11)(2)

我要回帖

更多关于 微信无法联网怎么回事 的文章

 

随机推荐