Reverse-Proxy
在對 Squid 的多個請求中,將單個請求發送到後端並在未命中時將其他請求排隊
當資源記憶體未命中時,我想通過讓 Squid 向伺服器發送單個請求來保護後端伺服器。在獲取期間,其他請求應暫停,直到單個請求返回。
標頭
stale-while-revalidate
幾乎可以滿足我的要求,但是當時間max-age
和時間stale-while-revalidate
都過去時,沒有過時的響應,並且多個請求將被發送到後端。該指令
collapsed_forwarding
似乎正是我正在尋找的。但我無法讓它按預期工作,在 max-age 期限內仍然看到對後端的多個請求。我正在使用具有 40 個執行緒的 SoapUI 5.2.1 簡單負載測試對此進行測試。我目前對 Squid (3.5.19) 的配置是預設配置,有以下更改:
#Queue incomming requests when a request is send to the backend. I.E. collapse request into a single backend request. collapsed_forwarding on # Squid normally listens to port 3128 http_port 3128 accel no-vhost defaultsite=localhost ignore-cc #Backend requires basic auth cache_peer 127.0.0.1 parent 53142 0 no-query originserver name=myAccel login=username:password #Allow caching of files that have a ttl of 1 seconds minimum_expiry_time 1 seconds acl our_sites dstdomain localhost http_access allow our_sites cache_peer_access myAccel allow our_sites cache_peer_access myAccel deny all
請求 URI:
/rest/information/bridge/Test?isrs=AB12345
響應頭
Cache-Control no-transform, max-age=2
就目前而言,反向代理似乎無法實現collapsed_rowarding 的預期效果。我已經在回复的 squid 郵件列表中問了這個問題(在發送了一些日誌之後):
折疊轉發尚不適用於記憶體重新驗證請求。工廠正在努力實施折疊的重新驗證(在某些環境中),但我不能保證具體的傳遞日期或將涵蓋您的特定環境。
查看郵件列表了解更多詳情: http: //lists.squid-cache.org/pipermail/squid-users/2016-June/011021.html