如何修复“指定缓存验证器”错误

已发表: 2022-06-11

如果您使用 GTmetrix 或 Pingdom 测试网站的性能,您可能会遇到“指定缓存验证器”的错误。 该消息意味着您没有充分利用浏览器缓存。 不幸的是,这会对您网站的性能产生负面影响。

在本文中,我们将讨论“指定缓存验证器”错误的含义。 我们还将向您展示如何在 WordPress 中修复它并优化您网站的性能。 让我们开始吧!

“指定缓存验证器”是什么意思?

通过启用缓存,您可以指示访问者的浏览器或“客户端”在访问您的网站时将关键文件存储在本地。 这样,用户每次打开您的页面时都不需要重新加载整个网站及其资源。

缓存是网站中非常普遍的做法。 这也是提高网站性能的最有效方法之一。 但是,正确的实现需要缓存“策略”。

该策略意味着包括缓存标头,这些标头提供有关以下内容的明确说明:

  • 如何验证缓存的资源
  • 客户端应该缓存哪些资源
  • 客户端应该缓存资源多长时间
  • 客户端应如何查找缓存资源的更改

“指定缓存验证器”错误意味着您的网站在其响应中没有相应的缓存标头。 缺乏指令并不意味着缓存不起作用。 但是,它不会像它可以那样有效地工作:

在 WordPress 中指定缓存验证器错误

如果您在分析 WordPress 网站的性能时遇到此错误,这意味着您的网站可能无法尽快加载。 但是,您可以通过使用适当的缓存标头来解决此问题。

如何在 WordPress 上指定缓存验证器(3 种方法)

您可以在网站的标头中实现几种类型的缓存验证器。 在某些情况下,服务器会自动添加它们,例如使用last-modifiedETag验证器。

如果您遇到“指定缓存验证器”错误,最可能的罪魁祸首是缺少缓存控制过期标头。 让我们介绍如何将它们都添加到 WordPress。

1.手动添加缓存控制头

缓存控制标头使您能够以秒为单位指定缓存的持续时间或“长度”。 您还可以使用这些标题来指示长度适用于哪些文件类型。 标头本身的结构将根据您使用的 Web 服务器软件而有所不同。

对于 Apache 服务器,您需要编辑.htacess文件。 您可以在 WordPress文件夹中找到它。 但是,我们建议通过文件传输协议 (FTP) 访问它。

打开.htaccess 文件并添加以下代码片段,然后对其进行自定义:

<filesMatch ".(jpg|jpeg|png|gif|js|css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>

该代码指示filesMatch标记中文件类型的缓存长度。 根据您要缓存的元素,您可以添加或删除文件类型。

如果您使用的是 NGINX,则需要修改服务器的主配置文件。 您可以在/etc/nginx目录中找到它。

打开文件并向其中添加以下代码:

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

保存对文件的更改并关闭它。 我们还建议在再次测试您网站的性能之前添加过期标头。

2.手动添加过期头

Expires标头是一些过时的缓存验证器类型。 事实上,缓存控制标头现在取代了它们。 大多数现代浏览器会首先查找缓存控制标头,但您可以指定两个验证器来覆盖您的基础。

手动添加过期标头的工作方式类似于 Apache 和 NGINX 中的缓存控制条目。 要在 Apache 中添加过期标头,您需要编辑.htaccess文件。

这是您可以复制的标头示例,我们建议将其添加到文件底部以避免冲突:

## EXPIRES HEADER CACHING ##
<IfModule mod_expires.c>
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"
ExpiresDefault "access 7 days"
</IfModule>
## EXPIRES HEADER CACHING ##

Expires标头指示每种文件类型的特定到期日期。 如果您没有为文件类型指定日期,它将使用ExpiresDefault值。

对于 NGINX 服务器,您需要修改主配置文件。 这是 NGINX 中过期标头的样子:

location ~* \.(png|jpg|jpeg|gif)$ {
expires 7d;
add_header Cache-Control "public";
}

将更改保存到您正在使用的任何文件中,就是这样。 再次测试您网站的性能,看看“指定缓存验证器”错误是否仍然存在。

3. 使用 WordPress 缓存插件

最后,您可以考虑使用插件来指定缓存验证器。 一些最流行的 WordPress 缓存插件使您能够为您的站点配置过期缓存控制标头,而无需接触任何代码。

使用缓存插件的缺点是许多网络主机不允许它们。 事实上,特别是许多托管 Web 主机通常不允许您使用缓存插件,因为它们为用户手动配置缓存以获得最佳性能。

大多数缓存插件会自动将您的网站配置为使用ETagLast-Modified标头。 如果他们不这样做,您可以默认使用缓存控制过期验证器。

例如,W3 Total Cache 让您可以完全控制可以使用的缓存头类型:

配置 W3 总缓存

如果您的虚拟主机允许您使用缓存插件,我们建议您探索多个选项,看看您觉得哪个更舒服。 或者,您可以手动指定缓存验证器(这并不难!)。

结论

缓存是减少用户加载时间的最有效方法之一。 重复访问者将受益于良好的缓存策略,因为加载时间将随着本地存储的文件而改善。 但是,如果您不配置特定的缓存策略,您将无法获得最佳的网站性能。

如果您的服务器默认不这样做(这是相对常见的),有几种方法可以在 WordPress 中指定缓存验证器。 根据您的主机和站点需求,手动添加缓存控制标头,手动添加过期标头或使用缓存插件将解决您的问题。 如果这些都没有,是时候联系房东的支持以获得更深入的帮助了。

您对如何在 WordPress 中指定缓存验证器有任何疑问吗? 让我们在下面的评论部分中讨论它们!

特色图片来自 apghedia / shutterstock.com