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默认安装产生系统漏洞
Oct 09 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
关于PHP语言构造器介绍
Jul 08 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
php设计模式之委托模式
Feb 13 PHP
10个值得深思的PHP面试题
Nov 14 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
php中的钩子理解及应用实例分析
Aug 30 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实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
浅谈Node.js 中间件模式
2018/06/12 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
django和vue实现数据交互的方法
2019/08/21 Python
Python的Lambda函数用法详解
2019/09/03 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
前厅收银主管岗位职责
2014/02/04 职场文书
英文演讲稿
2014/05/15 职场文书
车贷收入证明范本
2014/09/14 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书