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 相关文章推荐
用PHP和MySQL保存和输出图片
Oct 09 PHP
Discuz板块横排显示图片的实现方法
May 28 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
PDO::setAttribute讲解
Jan 29 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
组合算法的PHP解答方法
2012/02/04 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
php中yii框架实例用法
2020/12/22 PHP
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python中文件操作简明介绍
2015/04/13 Python
python处理html转义字符的方法详解
2016/07/01 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
计算机专业推荐信范文
2013/11/20 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
2015大学生求职信范文
2015/03/20 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
python 标准库原理与用法详解之os.path篇
2021/10/24 Python