php静态文件返回304技巧分享


Posted in PHP onJanuary 06, 2015

有时一些静态文件(如图片)会由php输出,会发现请求都是200,静态文件每次都去服务器上请求太浪费资源了,这时如何让浏览器缓存图片呢?就需要我们在php中输出304了。

我们可以利用php中的 HTTP_IF_MODIFIED_SINCE 结合etag来干这事。Etag没有明确规定的格式,我们可以用文件修改时间的md5值,代码如下:

private function _addEtag($file) {

    $last_modified_time = filemtime($file); 

    $etag = md5_file($file);

    // always send headers 

    header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"); 

    header("Etag: $etag"); 

    // exit if not modified

    if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time || 

    @trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { 

        header("HTTP/1.1 304 Not Modified"); 

        exit; 

    }

}

在代码中可以在静态文件(如图片)输出之前调用即可。

PHP 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php魔术变量用法实例详解
Nov 13 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
PHP中类的自动加载的方法
Mar 17 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 PHP
php判断当前用户已在别处登录的方法
Jan 06 #PHP
php实现utf-8转unicode函数分享
Jan 06 #PHP
windows中为php安装mongodb与memcache
Jan 06 #PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 #PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 #PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 #PHP
phplot生成图片类用法详解
Jan 06 #PHP
You might like
详解:――如何将图片储存在数据库里
2006/12/05 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
浅谈json_encode用法
2015/03/05 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python中为什么要用self探讨
2015/04/14 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
Python基于内置函数type创建新类型
2020/10/22 Python
预备党员政审材料
2014/02/04 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
网管求职信
2014/03/03 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
群众路线剖析材料
2014/09/30 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android