有时一些静态文件(如图片)会由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 控制304,php静态文件返回304技巧分享相关推荐

  1. php 控制304,php静态文件返回304技巧分享,_PHP教程

    php静态文件返回304技巧分享, 有时一些静态文件(如图片)会由php输出,会发现请求都是200,静态文件每次都去服务器上请求太浪费资源了,这时如何让浏览器缓存图片呢?就需要我们在php中输出304 ...

  2. php如何处理304缓存,php静态文件返回304技巧分享

    有时一些静态文件(如图片)会由php输出,会发现请求都是200,静态文件每次都去服务器上请求太浪费资源了,这时如何让浏览器缓存图片呢?就需要我们在php中输出304了. 我们可以利用php中的 HTT ...

  3. 将cdr文件导入ps技巧分享

    2019独角兽企业重金招聘Python工程师标准>>> 本教程主要介绍如何将cdr文件导入ps技巧,教程介绍的方法很实用,尤其对于新手来说很值得学习,喜欢的朋友可以跟着教程一起来学习 ...

  4. 将大量文件归类的技巧分享

    有没有可以批量管理桌面文件的方法呢?很多小伙伴们的电脑桌面被大量的文件占据着,想要整理确有心无力,那今天小编就来给大家分享一个可以快速将文件归类的简单操作. 这个方法需要大家在浏览器下载一个叫[固乔文 ...

  5. 如何在nginx中缓存静态文件

    这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设置一个 ...

  6. ASP.NET Core使用静态文件、目录游览与MIME类型管理

    前言 今天我们来了解了解ASP.NET Core中的静态文件的处理方式. 以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好了. ASP.NET Core则不同,因 ...

  7. 用nginx缓存静态文件

    这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设置一个 ...

  8. 霸气!Nginx 中缓存静态文件秘籍

    这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设置一个 ...

  9. HTTP 返回304

    304 的标准解释是: Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档).服务器告诉客户,原来缓冲 ...

最新文章

  1. P1502 窗口的星星 离散化+扫描线
  2. 计算机一级及wps试题,2016计算机一级WPS考试试题及答案
  3. 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)
  4. rete_Rete之外的生活– RIP Rete 2013 :)
  5. 利用flashback query解决误删除表数据
  6. python-笔记(二)数据类型
  7. C++基础教程之数组
  8. 剑指offer——面试题32:从1到n整数中1出现的次数
  9. ViT (Vision Transformer) ---- Seq2Seq
  10. Transcad学习记
  11. 阿里云跨境电商企业出海最佳实践及数字化解决方案
  12. 低代码平台开发 python_低组词_低的多音字组词,低是多音字吗,低组词有哪些
  13. Java初级程序员面试总结(二) --HashMap篇
  14. 算法进阶之BFS 算法
  15. 九个最佳ICON图标搜索引擎
  16. VScode配置PHP运行环境
  17. ctfshow--ssrf
  18. TrinityCore魔兽世界服务器-注册网站
  19. c语言中1代表true嘛,c++中-1是true呢还是false呢
  20. Matlab 预防性维修,MATLAB进行预测性维护(官网例程)-基于相似性进行剩余有效寿命预测 – MATLAB中文论坛...

热门文章

  1. SAP UI5 XML view lifecycle processing - defineMasterHeaderFooter
  2. Component Configuration.js - 所有支持属性列表 - configuration priority
  3. replication debug for PRODUCT_MAT
  4. Cloud for Customer UI里点了超链接后的跳转处理
  5. raise event when save - COM_PR_CHBADI_RAISE_WF_EVENT
  6. how does iv_included_delete work
  7. 二叉树的应用- 找出倚天屠龙记小说里所有的成语
  8. 一个具体的例子学习SAP S/4HANA里Fiori应用的排错分析
  9. 复旦大学计算机应用能力,复旦大学计算机应用能力水平测试(FudanComputerSkills.doc...
  10. html文本滚动到底后自动回到顶部,JS 实现DIV 滚动至顶部后固定