php代码浏览器缓存,php 浏览器缓存
浏览器缓存,就完全不是那么回事了,缓存内容存储在浏览器本地,而内容却由web服务器生成,任何一方都不可能独立完成这一系统过程,所以它们之间必须有一种沟通机制,这就是http中的“缓存协商"。
我们先来看一个通常的http请求:
host www.phprm.com
user-agent mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.9) gecko/20100824 firefox/3.6.9 firephp教程/0.4
accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language zh-cn,zh;q=0.5
accept-encoding gzip,deflate
accept-charset gb2312,utf-8;q=0.7,*;q=0.7
keep-alive 115 //开源代码phprm.com
connection keep-alive
上面就是一个普通的http请求,为了实现在浏览器缓存控制,我们需要了解http响应头中的四种标记:
last-modified:最后修改gmt时间
etag:通过一串编码来标记内容是否更改过
expires:指定一个过期gmt时间
cache-control:mag-age=相对于浏览器本地的过期秒数,可避免服务器时间不正确的情况下同样起作用.
http返回的状态代码:
200——请求成功
304——客户端已经执行了get,但文件未变化
400——错误请求,如语法错误
500——服务器产生内部错误
501——服务器不支持请求的函数
以下代码使用了以上四种方法来控制浏览器内容缓存一个小时,如果在一小时之内则立即返回304状态码通知浏览器使用本地的内容,这将节省服务器程序执行时间,网络传输时间,仅返回一个头文件.$modified_time = $_server['http_if_modified_since'];
if (strtotime($modified_time) + 3600 > time()) {
header("http/1.1 304");
exit(0);
}
header("last-modified:" . gmdate("d, d m y h:i:s") . "gmt");
header("expires:" . gmdate("d, d m y h:i:s", time() + 3600) . "gmt");
header("cache-control: max-age=3600");
特别需要说明一下的是:expires需要服务器商支持expires模块默认情况下是不会开启,使用以下命令即可:a2enmod expires //启用expires模块
/etc/init.d/apache2 restart //重启apache服务
我们还可以通过修改http.conf配置中:expires active on expiresbytype image/gif "access plus 1 month" expiresbytype text/css "now plus 2 day" expiresdefault "now plus 1 day"
以上是针对静态内容的mime类型来设置过期时间,因为我们无法给静态文件直接指定一个绝对到期时间,所以采用"access plus"式的语法,由web服务器在该内容被请求的时候动态计算一个绝对到期时间,作为expires标记的内容.
值得一提的是,对于常见的静态文件格式,即便是web服务器返回http响应头中没有expires标记,浏览器也会根据一些其它线索猜测一个过期时间,比如ie在某种缓存模式下,对于gif图片设置为永不过期,除非我们配置expires为马上过期,也就是将过期时间设置为当前时间或者0.
教程链接:
随意转载~但请保留教程地址★
php代码浏览器缓存,php 浏览器缓存相关推荐
- php 前端缓存,前端浏览器缓存及代码部署
前言 最近手上刚刚拆掉石膏,去楼下房友帮忙.楼下房友领导来自阿里,前端用的是阿里的ant-design,设计将设计图上传到蓝湖,聊天工具也采用阿里的钉钉.有时间我也多多去楼下房友交流学习,多交流,就会 ...
- 浏览器缓存和webpack缓存配置
网络请求会耗费大量时间和请求,如果可以重用为改变的网络资源,对于用户来说可以更快更流畅的查看网页,对于服务器来说减少了很多负荷,所以浏览器缓存是前端优化的重要内容.本文介绍了浏览器缓存的机制和缓存在w ...
- 前端获取浏览器标识_浏览器缓存机制
最近在项目中遇到了 IE浏览器因缓存问题未能成功向后端发送 GET类型请求 的bug,然后顺藤摸瓜顺便看了看缓存的知识,觉得有必要总结跟大家分享一下. 在前端开发中,性能一直都是被大家所重视的一点,然 ...
- IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新
IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新 IE针对Ajax请求结果的缓存/ IE浏览器同一个请求第二次是缓存 一.在AJAX请求的属性上直接设置cache functi ...
- php微信网页不缓存,微信浏览器取消缓存的方法
这篇文章主要介绍了微信浏览器取消缓存的方法,本文使用meta头信息实现取消了微信浏览器的缓存,特别是在开发时会经常用到,需要的朋友可以参考下. 做微信公众号和调试手机页面的时候,避免不了页面要跳转到微 ...
- js——浏览器缓存(http缓存)和本地存储
http缓存链接 http缓存的好处: 事先代码准备: 创建一个http服务 在集成终端中,输入node app.js启动服务 此时,在浏览器中输入localhost:3000,结果如下 新建一个in ...
- http缓存和浏览器缓存
一.前言 前端缓存主要是分为HTTP缓存和浏览器缓存.其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置:而浏览器缓存则主要由前端开发在前端js上进行设置. 缓存可以说是性能优化 ...
- DNS 缓存、CDN 缓存、浏览器缓存,JVM DNS 缓存详解
最近测试遇到修改host文件后,清除浏览器缓存后,重启浏览器后,发现浏览器还是访问老DNS服务,于是网上查查原因,豁然开朗. 这里对互联网上一些文章进行整理,原文可查看参. 1.DNS 缓存 1.1 ...
- 浏览器Disk Cache磁盘缓存及其协商缓存、及原生App和浏览器实现缓存的差异
浏览器Disk Cache磁盘缓存及其协商缓存.及原生App和浏览器实现缓存的差异 目录 浏览器Disk Cache磁盘缓存及其协商缓存.及原生App和浏览器实现缓存的差异 1.Memory Cach ...
- 了解浏览器cookie以及浏览器缓存
Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新 ...
最新文章
- Oracle数据类型及存储方式——字符类型篇
- ArcGIS 10.0 ArcGIS 9.3.1数据生成实验--个人地理数据库
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
- 机器视觉使用光源的几个选择标准
- [转载] Python Set intersection() 方法
- 浅谈Event Loop
- android 格林尼治标准时间的 格式转换 (String To Date) 报错 java.text.ParseException: Unparseable date
- 老年人大学计算机课程,老人学电脑(入门级)
- 什么是监管数据?什么是监管信息系统?监管数据安全管理办法说了什么?
- GPIO的同步性约束
- ubuntu怎么看服务器固态硬盘多大
- ping: unknown host www.baidu.com 解决办法
- 大数据DataX(三):DataX安装及使用
- 一行代码解决IE6~IE8以及IE兼容模式下的兼容问题
- 预防甲型流感病毒的注意事项和方法
- 简单四步抓取腾讯视频MP4文件
- 联想笔记本升级win10后黑屏无法开机解决方案
- 弘辽科技:拼多多商家入坑应该注意的事项。
- 机器学习 matlab工具箱,[matlab]机器学习及SVM工具箱学习笔记
- 基于Transformer的翻译模型(英->中)