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连mysql和oracle数据库性能比较
Oct 09 PHP
基于mysql的论坛(6)
Oct 09 PHP
简单的PHP图片上传程序
Mar 27 PHP
Apache服务器无法使用的解决方法
May 08 PHP
浅析PHP Socket技术
Aug 02 PHP
php分页代码学习示例分享
Feb 20 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
php封装的表单验证类完整实例
Oct 19 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP levenshtein()函数用法讲解
Mar 08 PHP
Laravel数据库读写分离配置的方法
Oct 13 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/07 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
php取出数组单个值的方法
2018/03/12 PHP
编写Js代码要注意的几条规则
2010/09/10 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Python算法之栈(stack)的实现
2014/08/18 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python异常触发及自定义异常类解析
2019/08/06 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
外贸公司实习自我鉴定
2013/09/24 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
优秀幼教自荐信
2014/02/03 职场文书
《雨点》教学反思
2014/02/12 职场文书
银行贷款承诺书
2014/03/29 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书