Php
可以對沒有特定副檔名或位於特定目錄中的記憶體文件進行清漆
我有一個清漆安裝來記憶體我的服務所服務的(許多)圖像。它大約是每秒 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 的更多資訊。