最明顯的例子就是防毒軟體的病毒碼更新
以下先用 squid.conf 的部份設定
來呈現何謂動態網址
refresh_pattern -i ^http\/:\/\/download[0-9][0-9][0-9]\.avast\.com\/iavs5x\/prod\-ais\.vpx$ 10080 70% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http\:\/\/download[0-9][0-9][0-9].avast\.com\/iavs5x\/servers\.def\.vpx$ 10080 70% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http\:\/\/download[0-9][0-9][0-9]\.avast\.com\/iavs5x\/part.*.vpx$ 10080 70% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http\:\/\/download[0-9][0-9][0-9]\.avast.com\/iavs5x\/jrog.*.vpx$ 10080 70% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http\:\/\/download[0-9][0-9][0-9]\.avast\.com\/iavs5x\/vps.*.vpx$ 10080 70% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http\:\/\/62\.146\.66\.178\/update 10080 30% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
refresh_pattern -i ^http\:\/\/62\.146\.66\.189\/update 10080 30% 10080 override-expire override-lastmod ignore-no-cache ignore-private ignore-auth
目前這些設定的效果,都是:「任何Client端更新病毒碼,都會透過Squid向原始位址下載」
之前曾觀察過 store.log
病毒碼的更新檔其實都有快取下來
只是因為Client端在執行更新的當下
很容易分到不同載點
所以造成每個Client更新時
都會透過Squid向原始位址下載
所以我想請教的是
對於這類可變動URL的快取
Squid是否有特別的處理方式?
要如何設定才能有「第一台Client透過Squid向原始位址下載完病毒碼後,第二台直接從Squid的快取下載」的效果?
系統環境:CentOS 5.5 + IPTables + Squid-2.7.STABLE9
squid 無法改變目標 ip
用 iptables 做 nat 可改
但 squid 去問後回給 client 也不同
所以我的想法由 Routing table 可試試看
squid Server 只要是往 62.146.66.* 都去 62.146.66.189 問
那對 squid 的 cache 就會相同
不過我用的是 FreeBSD 指令用法如下
route add -net 62.146.66 62.146.66.189
把送往 62.146.66.* 的封包交由 62.146.66.189 轉送
所以請你試試看 CentOS 5.5 的 routing 怎麼做
有問題再討論啦...........