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中iconv函数使用方法
May 24 PHP
smarty section简介与用法分析
Oct 03 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
PHP获取一段文本显示点阵宽度和高度的方法
Mar 12 PHP
搭建基于Docker的PHP开发环境的详细教程
Jul 01 PHP
PHP如何将XML转成数组
Apr 04 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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关联数组快速排序的方法
2015/04/17 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
php实现图片压缩处理
2020/09/09 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python reques接口测试框架实现代码
2020/07/28 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
Python中过滤字符串列表的方法
2020/12/22 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
节约用水演讲稿
2014/05/21 职场文书
员工安全承诺书
2014/05/22 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书