宁波城乡建设局网站,琼山网站制作,线上名片制作,青岛做网站的公司哪家好一点缓存的主要作用是防止用户频繁刷新网站页面#xff0c;导致服务器数据库负担#xff0c;既要保证信息更新的及时性#xff0c;也要保证缓存能被充分利用。http协议里控制浏览器缓存的头有三个Cache-Control#xff0c;Expires#xff0c;Last-Modified#xff0c;在PHP下…缓存的主要作用是防止用户频繁刷新网站页面导致服务器数据库负担既要保证信息更新的及时性也要保证缓存能被充分利用。http协议里控制浏览器缓存的头有三个Cache-ControlExpiresLast-Modified在PHP下控制请求页面的浏览器缓存主要是利用php的header()函数进行设置的。下面来了解一下这三个http协议里面控制缓存头的含义以及如何使用php设置这三种头标的方式吧(1)Cache-Control即缓存控制指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。 请求时的缓存指令有no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached等响应消息中的指令有public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的部分指令含义如下Public指示响应可被任何缓存区缓存。Private指示对于单个用户的整个或部分响应消息不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息此响应消息对于其他用户的请求无效。no-cache指示请求或响应消息不能缓存no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值那么客户机可以接收超出超时期指定值之内的响应消息。注意Cache-Control头标是在HTTP1.1里添加的相对于其他几种方式能够实现更细致的缓存控制。php设置 Cache_Control 头标示例代码如下1header(Cache-Control: max-age3600*24);//缓存1天表示最大生存期是1天超过1天浏览器必须去服务器重新读取这个时间是从用户第一次读取页面时开始计时的(2)Expires缓存过期的绝对时间(格林威治标准时间)。如果过了它指定的那个时间点浏览器就不认缓存了就会去服务器重新请求一份最新的。php设置 Expires 头标示例代码如下1header(Expires: Mon, 29 Jan 2007 08:56:01GMT);//指定过期时间注意这里使用的是格林威治标准时间获取格林威治标准时间可使用函数gmdate具体用法可参考相关文档。(3)Last-Modified文档的最后修改时间。它的用法就是1如果是静态文件客户端会发上来它缓存里的时间apache会来比对如果发现没有修改就直接返回一个头状态码是304字节数非常少。2如果是php动态文件客户端发上比对时间php会判断是否修改如果修改时间相同就只会返回1024字节至于为什么返回1024不得而知如果你的php生成的文件非常大它也只返回1024所以比较省带宽客户端会根据服务器端发过来的修改时间自动从缓存文件里显示。注意如果没有设置Last-Modified头只设置了Cache-Control和Expires也是可以起作用的但每次请求要返回真实的文件字节数而不是1024php设置 Last-Modified头标示例代码如下1header(Last-Modified: .gmdate(D, d M Y01:01:01,$time). GMT);//使用的是格林尼治时间,$time是指文件添加时候的时间戳下面发一个完整的通过php控制请求页面浏览器缓存的示例12echo这是一个缓存测试;3$timetime();4$interval3600*12;//12小时5header(Last-Modified: .gmdate(r,$time));6header(Expires: .gmdate(r,($time$interval)));7header(Cache-Control: max-age.$interval);另外分析一下刷新转到以及强制刷新的区别浏览器上有刷新和转到按键有的浏览器支持用ctrlF5强制刷新页面它们的区别是什么恐怕知道的人不多吧其实这三种动作完全可以用上面这三种头标进行解释。转到用户点击链接就是转到它完全使用缓存机制如果有Last-Modified那么不会和服务器通讯用抓包工具可以查看到发送字节是0byte如果缓存过期那么它会执行F5刷新的动作。刷新(F5)这种刷新也是根据缓存是否有Last-Modified来决定如果有会转入304或1024(php)如果没有最后更新时间那么去服务器读取返回真实文档大小。强制刷新(ctrlF5)完全抛弃缓存机制去服务器读取最新文档向服务器发送的header如Cache-Control:no-cache 指令。