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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
PHP+MYSQL的文章管理系统(一)
Oct 09 PHP
PHP has encountered an Access Violation
Jan 15 PHP
php 分页类 扩展代码
Jun 11 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
header导出Excel应用示例
Jan 24 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
浅谈使用PHP开发微信支付的流程
Oct 04 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
24条货真价实的PHP代码优化技巧
Jul 28 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
Laravel 5 框架入门(三)
2015/04/09 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
python和bash统计CPU利用率的方法
2015/07/10 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
python自动化办公操作PPT的实现
2021/02/05 Python
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
国企干部对照检查材料
2014/08/22 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫