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 中的批处理的实现
Jun 14 PHP
php下通过POST还是GET来传值
Jun 05 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
php 保留小数点
Apr 21 PHP
php microtime获取浮点的时间戳
Feb 21 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php利用header函数下载各种文件
Aug 24 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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
2006/12/13 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
php实现三级级联下拉框
2016/04/17 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
Python 模拟登陆的两种实现方法
2017/08/10 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
python输入多行字符串的方法总结
2019/07/02 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
CSS3简单实现照片墙
2014/12/12 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
数字漫画:comiXology
2020/06/13 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
商场中秋节活动方案
2014/02/07 职场文书
医药营销个人求职信
2014/04/12 职场文书
小学语文课后反思精选
2014/04/25 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
工作求职自荐信
2014/06/13 职场文书
聘用意向书
2014/07/29 职场文书
党性观念心得体会
2014/09/03 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
图文详解nginx日志切割的实现
2022/01/18 Servers