如何修复网站测速中“指定缓存验证器”的警告问题

自学咖网努力为各位打造免费分享知识与教程网站

你在WordPress网站上的Pingdom、GTmetrix或Google PageSpeed Insights中看到“指定缓存验证器”警告了吗?这是因为缺少HTTP缓存头,这些头应该包含在每个源服务器响应中,因为它们都验证和设置缓存长度。如果找不到头,它每次都会生成一个新的对资源的请求,这会增加服务器的负载。使用缓存头可以确保后续请求不必从服务器加载,从而为用户节省带宽并提高性能。

自学咖网努力为各位打造免费分享知识与教程网站

指定缓存验证器警告。

Pingdom的警告声明:

以下资源缺少缓存验证程序。没有指定缓存验证器的资源不能有效地刷新。指定Last-Modified或ETag标头,为以下资源启用缓存验证。

按照以下步骤解决“指定缓存验证”的警告。

修复“指定缓存验证器”警告

关于这个警告,首先要注意的是,您只能为服务器上的请求修复这个问题。如果您有第三方请求,您将看到此内容,但您无能为力,因为您无法控制他们的Web服务器。请随意与他们分享这篇文章。记住,使用Pingdom,您可能需要多次运行测试。可能是第一次警告,第二次警告就消失了。当您第一次运行该工具时,它将从服务器开始缓存资产。

有四种不同类型的标题可以用不同的方式来修复此警告。这可能有点混乱,但我们会尽量简单地解释。

验证缓存的标头。

前两个头是last-modified和ETag。这些标头可以帮助浏览器确定自上次请求以来文件是否发生了更改。或者说,他们验证缓存。

1.上次修改

最后修改的报头通常是从服务器自动发送的。这是一个你通常不需要手动添加的标题。发送它是为了查看自上次请求以来浏览器缓存中的文件是否被修改过。您可以在Pingdom中查看头请求,或者使用Chrome DevTools查看最后修改的头的值。

自学咖网努力为各位打造免费分享知识与教程网站

最后修订的标题

2.ETag

ETag的头也非常类似于Last-Modified头。它还用于验证文件的缓存。如果您运行的是Apache 2.4或更高版本,ETag头已经使用FileETag指令自动添加。就NGINX而言,从2016年开始默认启用ETag头。

自学咖网努力为各位打造免费分享知识与教程网站

ETag标题

您可以使用以下代码在NGINX中手动启用ETag头。

etag on

决定缓存长度的头。

接下来的两个头是Cache-Control和Expires。这些文件头有助于确定文件在从服务器获取新副本之前应在缓存中保留多长时间。请记住,要修复您在Pingdom或GTmetrix中看到的警告,您需要确保您有一个既可以验证缓存又可以确定缓存长度的头。

3.缓存控制

Cache-Control是一个由不同指令组成的头,它允许你定义缓存的长度。一些最常见的指令包括:

Max-age:定义文件应该被缓存的时间。

Public:允许任何缓存公开存储响应。

私有:文件缓存只能通过浏览器访问。

自学咖网努力为各位打造免费分享知识与教程网站

高速缓存控制头

在上面的例子中,我们可以看到资产正在使用max-age指令。64800秒等于7天的缓存。要在Apache中配置它,只需将以下代码添加到您的。htaccess文件。

Header set Cache-Control “max-age=604800, public”

要在NGINX中配置它,只需将以下代码添加到您的配置文件中。所有NGINX配置文件都位于这个/etc/nginx/目录中。主配置文件是/etc /etc/nginx/nginx.conf .

location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { add_header Cache-Control “public”;}

要了解关于不同指令的更多信息,请查看这篇关于缓存控制的深入文章。

4.呼气

最后,您有expires头。根据这篇Google Developers文章,HTTP Caching: Cache-Control头被定义为HTTP/1.1规范的一部分,并取代了以前用于定义响应缓存策略的头(在本例中为Expires头)。所有现代浏览器都支持缓存控制,所以这就是你需要的。但是,如果你两个都有,不会有什么坏处,但是记住,只会用一个。Expires标头使用实际日期,而Cache-Control标头允许您指定过期前的时间量。

自学咖网努力为各位打造免费分享知识与教程网站

过期标题

要在Apache中添加Expires头,只需将以下代码添加到您的。htaccess文件。

## EXPIRES HEADER CACHING ## ExpiresActive On ExpiresByType image/jpg “access 1 year” ExpiresByType image/jpeg “access 1 year” ExpiresByType image/gif “access 1 year” ExpiresByType image/png “access 1 year” ExpiresByType text/css “access 1 month” ExpiresByType application/pdf “access 1 month” ExpiresByType application/javascript “access 1 month” ExpiresByType application/x-javascript “access 1 month” ExpiresByType application/x-shockwave-flash “access 1 month” ExpiresByType image/x-icon “access 1 year” ExpiresDefault “access 7 days” ## EXPIRES HEADER CACHING ##

确保在mod_rewrite、GZIP等内容下添加Expires头块。在文件的底部是最安全的。

自学咖网努力为各位打造免费分享知识与教程网站

在中添加过期标头。htaccess

要在NGINX中添加Expires头,只需在配置文件中添加以下代码。

location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { expires 7d;}

在NGINX的许多情况下,Cache-Control头和Expires头只能一起使用,尽管这在技术上并不必要:

location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { expires 7d; add_header Cache-Control “public”;}

大多数第三方CDN提供商,如KeyCDN和Cloudflare,也会在交付您的资产时自动添加这些标头。如果您看到警告,可能是您的主机正在运行过时的软件或服务器配置错误。我们通常在共享主机上看到这种情况。或者,您可能正在设置自己的服务器,在这种情况下,上面的一些头可能没有被添加。

如果一切顺利,并且没有任何第三方请求没有正确使用标题,那么通过使用Pingdom等网站速度测试工具,您应该会看到您的分数有所提高(如下所示)。

自学咖网努力为各位打造免费分享知识与教程网站

修复了指定的缓存验证器警告

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 如何修复网站测速中“指定缓存验证器”的警告问题