php静态文件返回304技巧分享_php实例

有时一些静态文件(如图片)会由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;
    }
}

在代码中可以在静态文件(如图片)输出之前调用即可。

时间: 2024-10-29 19:48:27

php静态文件返回304技巧分享_php实例的相关文章

php生成静态文件的多种方法分享_php技巧

第一种:将php动态页面内容生成静态 复制代码 代码如下: ob_start();#开启服务器缓存 include_once 'Index.php'; $ctx=ob_get_contents();#获取缓存 ob_end_clean();#清空缓存 $fh=fopen("index.html","w+"); fwrite($fh,$ctx);#写入html,生成html fclose($fh); /* 1.Flush:刷新缓冲区的内容,输出. 函数格式:flush

一个经典的PHP文件上传类分享_php实例

文件上传是项目开发中比较常见的功能,但文件上传的过程比较繁琐,只要是有文件上传的地方就需要编写这些复杂的代码.为了能在每次开发中降低功能的编写难度,也为了能节省开发时间,通常我们都会将这些反复使用的一段代码封装到一个类中.帮助开发者在以后的开发中,通过编写几条简单代码就可以实现复杂的文件上传功能.对于基础薄弱的读者,只要会使用本类即可,而对一些喜欢挑战的朋友,可以尝试去读懂它,并能开发一个属于自己的文件上传类. 一.需求分析 要球自定义文件上传类,即在使用非常简便的前提下,又可以完成以下几项功能

注释PHP和html混合代码的小技巧(分享)_php实例

我们在写php的时候有时候会遇到想要注释一部分的代码,是由html和PHP混合组成的,这时候如果一行一行去分开注释有点麻烦.但是又不敢删掉,这时候我们可以充分利用if语句去进行注释的功能 <?php if (1==2):?> //代码片段 <?php endif;?> 以上就是小编为大家带来的注释PHP和html混合代码的小技巧(分享)全部内容了,希望大家多多支持~ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进

PHP文件缓存类示例分享_php实例

复制代码 代码如下: <?php     /**      * @desc 文件缓存      */     class Cache{         const C_FILE = '/Runtime/';         private $dir = '';         const EXT = '.tpl';         private $filename = '';         public function __construct($dir = ''){            

PHP中几个可以提高运行效率的代码写法、技巧分享_php实例

废话不多说,直接看代码示例. 一.遍历数组 在遍历数组中注意count的使用次数,不要每次都去计算数组长度 效率慢的写法 复制代码 代码如下: <?php   $array = array(1,2,3,4,5,6,7,8,9,10,....); for($i=0;$k<count($array);$i++){     echo $array[$i]; }   ?> 效率快的写法 复制代码 代码如下: <?php   $array = array(1,2,3,4,5,6,7,8,9,

Photoshop高效PS文件夹整理技巧分享

给各位Photoshop软件的使用者们来分享一下高效PS文件夹整理技巧. 技巧分享: 想想当你碰到下面几种情形时候的心情吧: "·由于你无法确定所需安装字体的文件夹,导致你无法编辑PSD中的文本图层. ·你想替换某个已经被你栅格化的图层,但是你找不到最初的图片和素材. ·你无法确定最终版的PSD到底是哪一个,因为你的文件夹里面的PSD名字分别为"这是最终版.PSD""最终的最终版.PSD""最终版在这里.PSD""不会有其他版

php静态文件返回

  有时一些静态文件(如图片)会由php输出,会发现请求都是200,静态文件每次都去服务器上请求太浪费资源了,这时如何让浏览器缓存图片呢?就需要我们在php中输出304了. 我们可以利用php中的 HTTP_IF_MODIFIED_SINCE 结合etag来干这事.Etag没有明确规定的格式,我们可以用文件修改时间的md5值,代码如下: 代码如下: private function _addEtag($file) { $last_modified_time = filemtime($file);

解析如何利用一个ASP.NET Core应用来发布静态文件_实用技巧

虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件的请求.针对不同格式的静态文件请求的处理,ASP.NET Core为我们提供了三个中间件,它们将是本系列文章论述的重点.不过在针对对它们展开介绍之前,我们照理通过一些简单的实例来体验一下如何在一个ASP.NET Core应用中发布静态文件. 目录 一.以Web的形式读取文件 二.浏览目录内容 三.显示默认页面

Asp Access 创建静态文件/HTML_应用技巧

作用说明:  本代码实现从 Access 提取数据以创建 HTML 文件, 不建文件夹. 如果文件名与要创建的文件名相同, 则覆盖, 跟 SQL 的更新一样的原理. 待加功能: 删除与查找.  复制代码 代码如下: <%  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' subject : Asp 创建静态文件/HTML By Stabx ' ' writer : Stabx<shawl.