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 相关文章推荐
2.PHP入门
Oct 09 PHP
类的另类用法--数据的封装
Oct 09 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
Oct 25 PHP
基于PHP常用函数的用法详解
May 10 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php输入流php://input使用浅析
Sep 02 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
php通过排列组合实现1到9数字相加都等于20的方法
Aug 03 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
PHP 时间处理类Carbon
May 20 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文件中是否含有bom的函数
2012/05/31 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
永不消失的title提示代码
2007/02/15 Javascript
一个用js实现的页内搜索代码
2007/05/23 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
Python去除、替换字符串空格的处理方法
2018/04/01 Python
浅谈python中get pass用法
2019/03/19 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python中格式化字符串的四种实现
2020/05/26 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
大专自我鉴定范文
2013/10/23 职场文书
学生自我评价范文
2014/02/02 职场文书
小学生暑假感言
2014/02/06 职场文书
信息技术毕业生自荐信范文
2014/03/13 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
暑假生活随笔
2015/08/15 职场文书
清明节随笔
2015/08/15 职场文书