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 15 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
php实现统计网站在线人数的方法
May 12 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
PHP底层运行机制与工作原理详解
Jul 31 PHP
PHP7 错误处理机制修改
Mar 09 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
php 上传功能实例代码
2010/04/13 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python实现网站表单提交和模板
2019/01/15 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
python交互模式基础知识点学习
2020/06/18 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
医药工作岗位求职信分享
2013/12/31 职场文书
机关出纳岗位职责
2014/04/03 职场文书
面试必备的求职信
2014/05/25 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
领导班子对照检查材料
2014/09/22 职场文书
公司的力量观后感
2015/06/05 职场文书
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript