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安装为Apache DSO
Oct 09 PHP
用PHP产生动态的影像图
Oct 09 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
php简单判断文本编码的方法
Jul 30 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 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
php横向重复区域显示二法
2008/09/25 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
python妙用之编码的转换详解
2017/04/21 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Python实现SMTP邮件发送
2020/06/16 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
教育专业个人求职信
2013/12/02 职场文书
阿德的梦教学反思
2014/02/06 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
保护环境标语
2014/06/09 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
就业推荐表导师评语
2014/12/31 职场文书