Php

可以對沒有特定副檔名或位於特定目錄中的記憶體文件進行清漆

  • September 1, 2012

我有一個清漆安裝來記憶體我的服務所服務的(許多)圖像。它大約是每秒 4k 左右的 200 張圖像,varnish 根據以下規則愉快地為它們服務:

if (req.request == "GET" && req.url ~ "\.(css|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") {
           remove req.http.cookie;
           return(lookup);
   }

現在,問題是我最近在同一台伺服器上添加了另一項服務,該服務創建了要提供的縮略圖,但它沒有添加特定的副檔名。這些文件具有以下文件名模式:

http://www.example.com/thumbnails/date-of-thumbnail/xxxxxxxxx.xx

其中 xx 是數字,所以 xxxxxxxxx.xx 可能是 6482364283.73(末尾有兩個數字)(實際上這是時間戳,所以我可以在文件名中保留額外資訊)

這有一個副作用,即清漆不會記憶體它們,我看到它們不斷地由 apache 本身提供服務。

即使我可以從現在開始更改格式以創建以 結尾的拇指.jpg,有沒有辦法更改我的清漆守護程序的 vcl 文件以記憶體目錄(thumbnails目錄)下的所有內容或在其副檔名中有兩個數字的所有內容?

讓我知道我是否可以提供任何其他資訊!

謝謝!

對現有規則稍作修改即可:

if (req.request == "GET" && req.url ~ "^/thumbnails/") {
       remove req.http.cookie;
       return(lookup);
}

或者,\.\d{2}$如果您想記憶體以兩位數結尾的所有內容,您可以製作正則表達式。

認為使用匹配的縮略圖目錄更容易。

req.url ~ "\thumbnails\?.*"應該很接近。

我建議您閱讀有關正則表達式和 Varnish 的更多資訊。

引用自:https://serverfault.com/questions/413937