【发布时间】:2012-01-09 09:18:36
【问题描述】:
我有一个 Wep 页面:http://uranussup.info。我运行了一个 yslow 测试。有很多请求 (20),上面写着“内容不可缓存”和“没有过期日期”。我该如何解决?
【问题讨论】:
我有一个 Wep 页面:http://uranussup.info。我运行了一个 yslow 测试。有很多请求 (20),上面写着“内容不可缓存”和“没有过期日期”。我该如何解决?
【问题讨论】:
您需要配置您的服务器,以便它使用不同的HTTP headers 为您的网站内容提供服务。
来自雅虎! Best Practices for Speeding up Your Web Site:
添加过期或缓存控制标头
这条规则有两个方面:
- 对于静态组件:通过设置 far 实现“永不过期”策略 未来
Expires标头- 对于动态组件:使用适当的
Cache-Control标头来 帮助浏览器有条件 请求网页设计越来越丰富 更丰富,这意味着更多的脚本, 样式表、图像和 Flash 页。首次访问您的 页面可能要制作几个 HTTP 请求,但通过使用 Expires 您制作这些组件的标头 可缓存的。这避免了不必要的 后续页面上的 HTTP 请求 意见。过期标头最常见 与图像一起使用,但它们应该是 用于所有组件,包括 脚本、样式表和 Flash 组件。
浏览器(和代理)使用缓存来 减少 HTTP 的数量和大小 请求,使网页加载 快点。 Web 服务器使用 Expires HTTP响应中的标头告诉 客户端一个组件可以有多长 缓存。这是一个遥远的未来 标头,告诉浏览器这个 反应要到四月才会过时 2010 年 15 月 15 日。
Expires: Thu, 15 Apr 2010 20:00:00 GMT如果您的服务器是 Apache,请使用 ExpiresDefault 指令设置一个 到期日相对于 当前的日期。这个例子 ExpiresDefault 指令设置 到期日期 10 年后 请求的时间。
ExpiresDefault "access plus 10 years"请记住,如果您使用遥远的未来 过期标题你必须改变 组件的文件名,只要 组件变化。在雅虎!我们经常 将此步骤作为构建的一部分 进程:嵌入版本号 在组件的文件名中,对于 例如,yahoo_2.0.6.js。
使用遥远的未来 Expires 标头 仅在用户访问后影响页面浏览量 已经访问过您的网站。它有 对 HTTP 数量没有影响 用户访问您的网站时的请求 第一次和浏览器的 缓存为空。因此影响 这种性能改进 取决于用户点击您的频率 带有准备好的缓存的页面。 (一个“引 缓存”已经包含了所有 页面中的组件。)我们测量了 这在雅虎!并找到了数量 具有准备好的缓存的页面浏览量是 75-85%。通过使用遥远的未来 Expires 标头,你增加的数量 缓存的组件 浏览器并在后续页面上重复使用 不发送单个字节的视图 通过用户的 Internet 连接。
【讨论】:
应该可以,但不确定是“mod_expires.c”还是“mod_expires.so”——目前都不适合我。
<IfModule mod_expires.so>
ExpiresActive On
ExpiresDefault "access plus 4 hours"
ExpiresByType application/javascript "access plus 2 months"
ExpiresByType application/javascript-x "access plus 2 months"
ExpiresByType text/javascript "access plus 2 months"
ExpiresByType image/jpg "access plus 2 month"
ExpiresByType image/jpeg "access plus 2 month"
ExpiresByType image/gif "access plus 2 month"
ExpiresByType image/png "access plus 2 month"
ExpiresByType text/css "access plus 2 months"
ExpiresByType text/html "access plus 2 months"
ExpiresByType text/xml "access plus 2 months"
ExpiresByType text/plain "access plus 2 months"
ExpiresByType image/x-icon "access plus 12 month"
ExpiresByType image/icon "access plus 12 month"
ExpiresByType application/x-ico "access plus 12 month"
ExpiresByType application/ico "access plus 12 month"
</IfModule>
【讨论】: