Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是expire头,以及如何在ASP.NET和PHP中实现它们?_Php_Asp.net_Performance_Http Headers_Yslow - Fatal编程技术网

什么是expire头,以及如何在ASP.NET和PHP中实现它们?

什么是expire头,以及如何在ASP.NET和PHP中实现它们?,php,asp.net,performance,http-headers,yslow,Php,Asp.net,Performance,Http Headers,Yslow,今天,我已经检查了我的网站使用性能统计数据。我得到一个警告(或可能是错误),如下所示 Add Expires headers There are 15 static components without a far-future expiration date. * (no expires) http://www.example.com/video/css/global.css * (no expires) http://www.example.com/video/js/glo

今天,我已经检查了我的网站使用性能统计数据。我得到一个警告(或可能是错误),如下所示

Add Expires headers
There are 15 static components without a far-future expiration date.

    * (no expires) http://www.example.com/video/css/global.css
    * (no expires) http://www.example.com/video/js/global.js
    * (no expires) http://www.example.com/video/images/main-bg.png
这意味着什么以及如何在PHP和ASP.NET中实现这一点。我在共享托管服务器上,所以请告诉我一些使用代码来实现这一点的方法,因为我无法在服务器端进行任何修改

如果我将使标题过期,那么是否有可能,如果我在CSS中进行更改,那么用户将无法立即获取它们,因为CSS和其他文件会在特定的时间限制(1个月,一周)内缓存。是吗

使用expire头有什么缺点吗

$time = time() + 3 * 24 * 60 * 60; // 3 days
header('expires: ' . gmdate('D, d M Y H:i:s \G\M\T', $time);
但是我建议您使用Apache模块
mod_expires
[1]。然后可以将类似的内容放入.htaccess文件中

<FilesMatch "\.(jpg|gif|png|css|js)$">
    ExpiresActive on
    ExpiresDefault "access plus 3 days"
</FilesMatch>

过期于
ExpiresDefault“访问加3天”
这将匹配所有图像、CSS和JavaScript文件,并将
Expires
头设置为3天


[1]

显然,expire标题的缺点是您已经说过的,如果您进行了更改,则用户在过期之前不会收到新版本

另一个选项是发送一个修改日期的标题,这样用户下次访问浏览器时会询问文件是否已更改。。。如果没有,它将只加载缓存的版本。但不确定哪些浏览器实际遵循此标准

这些选项仍然只适用于动态页面,要对静态内容(如样式表或图像)执行此操作,您将需要更多的服务器访问权限。(您也可以使用.htaccess文件实现其中一些结果)

在这里,我在谷歌上为你进一步阅读

PHP资源:

ASP.NET资源:

.htaccess资源:

如果您担心css缓存时间过长,您可以在源html页面中向样式表或javascrip链接添加一些文本,例如。发布新css文件时只需更改该文本我知道许多web代理配置将终止查询标记方案,因为代理配置设置为从不缓存任何带有查询的URL,这是因为web应用程序在应该使用POST时使用query GET的错误做法。所有具有此名称的浏览器都会遵循If MODIFED INCED BER方案。但是,这仍然需要昂贵的往返web服务器的费用。Expires标记快几百毫秒。乘以多个项目,速度会加快几秒。