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 daodb插入、更新与删除数据
Mar 19 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
Yii2框架中一些折磨人的坑
Dec 15 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利用百度ai实现文本和图片审核
2019/05/08 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
Python实现把回车符\r\n转换成\n
2015/04/23 Python
django实现分页的方法
2015/05/26 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
Python模块future用法原理详解
2020/01/20 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
PHP面试题及答案一
2012/06/18 面试题
倡议书格式范文
2014/04/14 职场文书
受资助学生感谢信
2015/01/21 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
浅谈Python协程asyncio
2021/06/20 Python
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis