Squid 最佳化命中率的方法 (正向代理) - PCZONE 討論區

返回   PCZONE 討論區 > ▲ ADSL_CABLE_FTTH 寬 頻 上 網 討 論 > -- 網 路 技 術 版


PCZONE 討論區



通知

-- 網 路 技 術 版 較深入的網路方面技術問題,請來此這版討論

會員
Squid 最佳化命中率的方法 (正向代理)
一個網頁的組成有以下這些元素(物件)

jpg、png、gif、js、flv、xml、swf、txt、html、shtml.....

用 Squid 緩存時,最理想的情況是
在上述網頁元素(物件),沒有被原始站點改變的情況下
不與遠端伺服器做任何連接(傳送封包)
直接從 Squid 的快取中返回資料給使用者的瀏覽器

於是我做了以下的分類

圖片 (jpg、png、gif、bmp)
程式語言 (js、css、xml)
其它 (flv、swf)

這些物件的特點

1.變更(更新)頻率較低
2.變更(更新)後,通常網址也會做變更

所以這些物件在 Squid 的 refresh_pattern 設定是 (版本是 2.7)

43200 60% 43200 override-expire ignore-reload ignore-no-cache ignore-private
ignore-auth ignore-stale-while-revalidate

也就是東西快取下來,直接放置一個月,也無視瀏覽器的變更請求

再來是另外一類

html、shtml、txt、php、jsp

這些元素則「必須」與遠端伺服器做連接來確認內容是否有更新
否則瀏覽器取得舊資料的可能性將大增

所以設定變成

0 30% 10080 reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-auth ignore-stale-while-revalidate

關鍵在 reload-into-ims 這個語法,Squid 會先去遠端伺服器確認目標物件是否
被變更過,若有則更新,若無責返回舊資料,這樣做應該比起無條件整個重新抓取資料的速度要快

另外那個百分比的參數還是有點不懂意思
--
這樣的設定用了兩個月,八萬的 http Requests,Hits 了兩萬八左右 (使用者只有一人)
也就是 34% 的命中率 (這是在瀏覽器本身的快取設定開啟的狀態下,如果關閉瀏覽器
(Firefox)的快取,那命中率快提高至 45% 以上甚至 60%,根據實驗,就算使用了 Squid
瀏覽器的內建快取不關閉時的速度/效率比關閉來的高)

大致就是如此
不曉得其他版友是如何設定 Squid 以提高命中率的呢?
歡迎拍磚、討論...

回覆
會員
回覆: Squid 最佳化命中率的方法 (正向代理)
感謝您的分享,我轉貼到我的Blog(有註明出處),如有問題再請通知我,感恩!

另外分享一下我在其他網站中看到的設定方法,提供給大家討論看看:


refresh_pattern -i (cam|kam|live|stream).*\.(gif|jpeg|jpg)(\?.*|)$ 10 20% 28800 override-expire
override-lastmod reload-into-ims
ignore-no-cache ignore-private ignore-auth


refresh_pattern -i \.(gif|jpeg|jpg|swf|png|bmp|pic)$ 2880 20% 28800 override-expire
override-lastmod reload-into-ims
ignore-no-cache ignore-private ignore-auth


refresh_pattern -i \.(html|php|asp|dll|htm|aspx|mspx|shtml|cgi|php3|jse|phtml|po|pl|fcgi|jsp|py|php4)$ 10 20% 28800 override-expire
override-lastmod reload-into-ims
ignore-no-cache ignore-private


refresh_pattern -i \.(js|css|class|jar|xml|txt|cfm|doc|xls|pdf)$ 2880 20% 28800 override-expire
override-lastmod reload-into-ims
ignore-no-cache ignore-private ignore-auth


refresh_pattern -i \.(exe|gz|tar|tgz|zip|arj|ace|bin|cab|msi)(\?.*|)$ 10 20% 2880 override-expire
override-lastmod reload-into-ims
ignore-no-cache ignore-private ignore-auth


refresh_pattern -i \.(mid|mp[234]|wav|ram|rm|au)(\?.*|)$ 2880 20% 28800 override-expire
override-lastmod reload-into-ims
ignore-no-cache ignore-private ignore-auth


refresh_pattern -i \.(mpg|mpeg|avi|asf|wmv|wma)(\?.*|)$ 2880 20% 28800
override-expire override-lastmod reload-into-ims
ignore-no-cache ignore-private ignore-auth


refresh_pattern . 0 20% 2880
override-expire override-lastmod reload-into-ims
ignore-no-cache ignore-private
回覆
會員
回覆: Squid 最佳化命中率的方法 (正向代理)
我想您也要用程式設計的觀念進去想,圖片可能是captcha,快取一個月那會有大問題,flash 也是同樣,如果玩遊戲的人可能會載入到舊的

其他部分像網頁現在大家都大玩 URLrewrite ,.htm .xml 也可能是 php 動態產生的

一個人的使用狀況,和很多時使用時不太一樣,很難達成最佳化,最多只能說最合用
回覆
會員
回覆: Squid 最佳化命中率的方法 (正向代理)
To : iamyy

非常歡迎轉貼,我幾乎把網路上關於 Squid 的中文資料都看過了,但目前的功力
也只能做到這樣,希望有更多的高手能補充我的設定的不足之處

To : dmwc

這樣的設定的確有可能拿到舊的資料,但如果發現到舊資料
刷新 ( F5 ) 後能正確的更新的話,我是可以接受的
畢竟想調整到百分之百拿到新資料是很難的

雖然加上 reload-into-ims 參數或許能解決
但只要有這個參數,就一定會跟遠端伺服器做連線 ( 會有封包出去 )
這樣資料返回的速度就沒那麼快了

所以圖片類跟 js、csss 等這些元素,就是在相信絕大多數的情況下不會經常更動
即使更動,名稱通常也會變化,所以才敢大膽的放置一個月
--
補充一下,我是把 Squid 的快取放在一顆舊的 70G 硬碟上,設定 10G 拿來放快取
以目前的設定,Squid 加上瀏覽器本身的快取,估計最少 50% 以上的網頁資料都是直接從我電腦裡面獲取的,但我相信目前如此還不是 Squid 這套悠久歷史的快取軟體的極致。

另外附上一篇 Google 工程師對目前瀏覽器的快取機制不滿意的文章

http://www.stevesouders.com/blog/201...owser-caching/

回覆


類似的主題
主題 主題作者 討論版 回覆 最後發表
Squid 的 cache_peer 功能 櫻飛 -- 網 路 技 術 版 5 2010-10-22 04:38 PM
【求助】FreeBSD4.9 + Squid 2.5 法克 -- FreeBSD & Linux 討 論 版 7 2004-08-26 11:42 AM
Squid Log中如何知道用家的使用時間和日期? rainfile -- FreeBSD & Linux 討 論 版 0 2002-06-14 11:40 AM
Squid Proxy可以Block網址嗎? rainfile -- FreeBSD & Linux 討 論 版 5 2002-03-28 12:34 AM
Squid 可以支援ASP嗎? rainfile -- FreeBSD & Linux 討 論 版 0 2002-03-11 10:27 AM






 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。