如何修復“指定緩存驗證器”錯誤

已發表: 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