簡體   English   中英

如何檢查 Varnish 緩存是否正常工作?

[英]How to check if Varnish cache is working correctly?

我在 Nginx 上運行的 Wordpress 網站上使用 Varnish Cache。 它是按照本博客中提到的方式配置的。 它正在工作,但我不確定它是否真的從緩存中提供內容。

怎樣才能確定? 有人可以指導我。 我是 Varnish 緩存的新手。

默認情況下,Varnish會將標頭添加到它處理的任何請求的響應中。 您可以使用Firebug等瀏覽器工具或curlGET等CLI工具查看響應標頭。 這是一個GET示例:

sudo apt-get install libwww-perl && GET -Used http://localhost:6081/index.html

要查找的兩個標題是X-VarnishAge X-Varnish中將包含一個或兩個數字,數字本身並不重要,但它們指的是請求。 如果請求導致未命中,則Varnish從后端獲取頁面,並且響應中的X-Varnish標頭包含當前請求的一個數字:

X-Varnish: 107856168

下次請求同一頁面時,可能會導致命中。 如果是這樣,Varnish從緩存中提取頁面,並添加原始請求中的數字:

X-Varnish: 107856170 107856168

Age標題表示緩存副本的秒數。 如果沒有,它將為0,並且命中時它> 0。

請注意,后端可以設置年齡標題,使其看起來像一個錯誤的點擊,堆疊的清漆可以在X-Varnish標題中產生錯誤的錯誤。 為了確保在調試時你可以在VCL命中和未命中函數中添加自己的標題。 有關說明,請參閱此頁面https://www.varnish-software.com/static/book/VCL_functions.html 作為Varnish的新手,X-Varnish和Age標頭很可能是您所需要的。

最好在vcl的各個位置添加自己的X-header,以便可以對vcl的各種代碼路徑和條件進行單元測試。

例如,在vcl_deliver中:

sub vcl_deliver
{
    # Insert Diagnostic header to show Hit or Miss
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
        set resp.http.X-Cache-Hits = obj.hits;
    }
    else {
        set resp.http.X-Cache = "MISS";
    }

    ...
}

有幾個很好的快速工具可以公開測試 varnish 是否正在緩存 - https://isvarnishworking.ukhttps://isvarnishworking.co.uk ,我用來測試 varnish 是否在幾個站點上工作。 它們主要依賴於 X-Varnish 和 X-Cache 標頭,但會顯示所有標頭,因此您可以在清漆 vcl 中設置任何您想要的內容,並且您可以在網頁上看到標頭

要驗證 Varnish 是否正在代理,請在響應中查找X-Varnish標頭的存在。 Age標頭在緩存未命中時為0在命中時高於零。 對頁面的第一個請求總是未命中。

帶有-v標志的 curl 可用於顯示標題。 使用 bash 中的 curl:

curl -v http://localhost:8080

緩存命中的示例輸出:

*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/x.xx.x
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Server: nginx/1.20.0
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< Content-Length: 45703
< X-Varnish: 32770 3
< Age: 6
< Via: 1.1 varnish (Varnish/7.0)
< Accept-Ranges: bytes
< Connection: keep-alive
<
<!DOCTYPE html>
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM