什么是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标记快几百毫秒。乘以多个项目,速度会加快几秒。