首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Google Chrome对缓存的审计

Google Chrome对缓存的审计
EN

Stack Overflow用户
提问于 2010-07-31 20:55:00
回答 3查看 8.4K关注 0票数 17

如果我使用Google Chrome在我的网站上运行审计,我会在利用浏览器缓存部分得到以下消息:

以下资源缺少缓存过期时间。浏览器可能不会缓存未指定过期时间的资源:

下面是所有图片的列表。我在利用代理缓存方面得到了类似的通知。

考虑在以下资源中添加"Cache-Control: public“头部:

除了图片,我还收到了关于HTML,CSS和JavaScript文件的通知:

以下资源是显式不可缓存的。如果可能,请考虑将它们设置为可缓存:

这很有趣,因为我一直在努力缓存所有静态内容(除了图片,我刚刚保留了Apache的默认设置)。Firefox确实将所有这些项目都存储在缓存中。

我的HTTP报头中有什么需要改进的地方吗?

这是移除浏览器缓存后加载的一些项目的完整标题集。图片使用默认设置,我之前并没有真正检查过,其余的应该缓存三个小时。我可以用.htaccessPHP来设置头文件。

PNG

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Sat, 31 Jul 2010 12:46:14 GMT
Server: Apache
Last-Modified: Thu, 18 Mar 2010 21:40:54 GMT
Etag: "c48024-230-4821a15d6c580"
Accept-Ranges: bytes
Content-Length: 560
Keep-Alive: timeout=4
Connection: Keep-Alive
Content-Type: image/png

HTML

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Sat, 31 Jul 2010 12:46:13 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Expires: Sat, 31 Jul 2010 15:46:13 GMT
Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate
Content-Encoding: gzip
Vary: Accept-Encoding
Last-Modified: Wed, 24 Mar 2010 20:30:36 GMT
Keep-Alive: timeout=4
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=ISO-8859-15

CSS

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Sat, 31 Jul 2010 12:48:21 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Expires: Sat, 31 Jul 2010 15:48:21 GMT
Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate
Content-Encoding: gzip
Vary: Accept-Encoding
Last-Modified: Thu, 18 Mar 2010 21:40:12 GMT
Keep-Alive: timeout=4
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/css

JavaScript

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Sat, 31 Jul 2010 12:48:21 GMT
Server: Apache
X-Powered-By: PHP/5.2.11
Expires: Sat, 31 Jul 2010 15:48:21 GMT
Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate
Content-Encoding: gzip
Vary: Accept-Encoding
Last-Modified: Thu, 18 Mar 2010 21:40:12 GMT
Keep-Alive: timeout=4
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/x-javascript

更新

我已经测试了Jumby的建议,并将我的CSS到期时间设置为1年:

代码语言:javascript
复制
Cache-Control:max-age=31536000, s-maxage=31536000, must-revalidate, proxy-revalidate
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:4198
Content-Type:text/css
Date:Mon, 02 Aug 2010 20:48:56 GMT
Expires:Tue, 02 Aug 2011 20:48:56 GMT
Keep-Alive:timeout=5, max=99
Last-Modified:Thu, 18 Mar 2010 20:40:12 GMT
Server:Apache/2.2.14 (Win32) PHP/5.3.1
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.1

然而,Chrome仍然声称“显式不可缓存”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-03 03:45:52

对于yslow/页面速度的东西来说,3个小时的过期时间可能不够,他们可能会抱怨这一点。我在我的网站上看到过这种情况,静态内容在4小时内过期&很慢(还没有尝试过谷歌的东西)。

其中大多数人希望版本化的静态内容具有较长的过期时间(例如1年);请参阅here

票数 4
EN

Stack Overflow用户

发布于 2010-12-31 12:47:55

问题出在缓存控制指令中的“必须重新验证”部分。把它去掉,你就可以走了。

票数 2
EN

Stack Overflow用户

发布于 2012-06-14 19:53:05

我刚刚遇到了一个类似的问题,当我在127.0.0.1的测试服务器上尝试时,我发现完全相同的设置和代码会产生chrome审计警告,但不是在真实的DNS服务器上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3378177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档