魷魚緩存-第2部分

Squid不僅是代理和緩存服務,還可以做更多的事情:管理ACL(訪問列表),過濾內容,甚至甚至可以在透明模式下進行ssl過濾(代理方法-無需在瀏覽器中配置代理設置) ,就像中間的人,沒人知道它在那兒)。 因此,我通常會通過不知道如何配置其每個部分來了解如何浪費此應用程序的全部潛力。

現在,魷魚所做的有趣的事情是緩存(在我看來)。 您會告訴我為什麼要緩存嗎?原因很簡單,更好地管理您的速度和帶寬的使用是首要任務。 仔細想想,公司中每1000分鐘有5個人進行諮詢,常見頁面,Google,Hotmail,Gmail等...,以便您一次又一次地下載圖片,橫幅,廣告,html內容,所有這些都是靜態的事情,它們沒有那麼頻繁地更改,最好將它們存儲在本地網絡中,並在您考慮的配置內提供您認為是最近的副本。

怎麼做呢?簡單用下面的句子:

refresh_pattern [-i] regex min percent max [options]

就像我經常說的,不要相信所有事情,因此我邀請您閱讀官方消息。 我建議你閱讀這句話的手冊 這裡

句子 刷新模式 向緩存添加新參數將始終是我們的標籤。

重要的是,您的緩存列表必須是順序的,因為一旦它與第一個與對象匹配的列表匹配,它將不再繼續讀取您的其他規則。

正則表達式區分大小寫,因此flv與FLV不同,但是如果需要,可以使用選項來避免這種情況 -i 。 然後看起來像這樣 刷新模式 -i

'Min': 這是時間(分鐘),其中某個對象將被視為“最近或新鮮”,並且如果該對像沒有明確的標籤“已過期”。 缺省情況下,squid建議將其設置為0,因為某些動態應用程序的行為可能會很奇怪,純粹是這樣,實際上,該值應該是您認為對要緩存的元素有用且有效的數字, 例如:jpg,1440分鐘(一天)對我來說似乎不錯,這就像帖子的圖像每5分鐘在頁面上更改一次一樣。

'百分' 它是對象(自上次修改以來)的年齡百分比,將被視為“最近”或“最新”。 讓我解釋一下,也許是進行不斷的重新加載或刷新以查看對網頁所做的最後修改,squid可以考慮是否已經在兩次更新之間完成了50%的時間。 分鐘 y 最大,從互聯網上重新下載該對象,然後給您一個新副本。

'最大' 是超過或等於的限制 一個對像被視為“最近或新鮮”的時間,假設某個頁面的圖像僅被用戶查詢一次,該對像已經達到其時間 分鐘,但不是 最大,然後再次對其進行查詢時,將交付一個緩存副本。

Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale

做出這些選擇主要是為了忽略語言和協議中預先建立的行為,以確保有效使用緩存。

override-expire

即使服務器發送了更短的到期時間(例如標頭或Cache-Control:max-age之類的東西),它也會強制執行對象的最短時間。 如果執行此操作,則會出現“警告”字樣,例如“違反HTTP標準”,但這只是警告,我們可以忽略。 現在,如果服務器發送的時間更長,那麼魷魚將花費服務器的時間(到期)

override-lastmod

增強項目的最短時間,即使該項目最近被修改也是如此。

reload-into-ims

簡短的解釋是,這防止了當我們按下刷新按鈕或提出無緩存請求時,如果未“更改自”和/或頁面上沒有“標題”,則魷魚將交付緩存。

ignore-reload

忽略用戶按下重新加載或刷新頁面按鈕的操作

ignore-no-store

忽略標頭中不緩存的任何規則,例如視頻

ignore-private

忽略私有內容標頭中不應緩存的任何規則,例如:facebook內容。

refresh-ims

Squid與服務器聯繫,以確保對像是否是最新的。 如果是,它將傳遞緩存

store-stale

Squid將保存所有這些響應,即使它們沒有到期日期,這也是非常不切實際的,因為它們通常無法重複使用。 如果決定啟用它,則必須聲明max-stale = NN

max-stale=NN

如果啟用了上述選項,則必須聲明該響應或因子的最大生存期。 Squid不會提供這種樣式的對象,但可以通過源進行驗證

這是一張表格,根據我們討論的值來說明``FRESH''狀態如何工作:

  • 如果現在過期,則為“新鮮”>“否則”
  • 如果年齡>最大,則出售
  • 如果lm-factor <百分比,則為FRESH,否則為STALE
  • 如果年齡<min,則為新鮮,否則為STALE

這是具有大量磁盤空間,良好設備和良好帶寬的特定公司的示例配置

refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB

現在,緩存不僅位於硬盤上,我們還可以緩存ram內存,該值適用於每個魷魚進程,因此在使用重定向器(如重定向器)時必須將其考慮在內 魷魚衛隊

maximum_object_size_in_memory 1024 KB

squid將存儲在內存中的對像在內存中的最大大小。 您還可以聲明一個最小值。


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

如您所見,一種是替換RAM內存中的緩存,另一種替換硬盤中的緩存的策略。 GDSF和LFUDA有2個策略。 第一個試圖提高高速緩存命中的百分比,手頭上有許多小對象,第二個試圖相反,它將對象保持在高速緩存中,而不管它們的大小如何。

我想您現在要問的問題是,我用什麼呢?好吧,如果您認為在您的環境中,他們會進行大量查詢,而很少下載會使用GDSF,如果相反,他們會進行大量下載和很少的LFUDA查詢。 如果我不建議在運行時建議使用LFUDA(我不知道),則將其緩存在1TB磁盤中,則效率更高。

maximum_object_size 4 MB

對象必須存儲的最大大小

cache_dir aufs /media/proxy249/cache 100 16 256

將緩存存儲在何處,這裡要注意,重要的是,如果您使用ufs,aufs或磁盤,則這3個功能或多或少都相同,不同之處在於aufs和磁盤使用單獨的進程對I / O操作硬盤,並避免魷魚進程在這些操作期間掛起,另外,使用磁盤安裝時,您可以指定此任務將擁有的線程數。 如果您有一個好的團隊,我建議您使用aufs。

大小為100(兆),您可以放置​​100000幾乎是100GB,具體取決於您的可用性。 16是文件夾數,256是子文件夾數。 您可以根據光盤的速度和所擁有的資源來使用這兩個值。


cache_swap_low 90
cache_swap_high 95

這些選項是對象替換值,它是根據魷魚作為水印的最小值和最大值,其中這些數字以百分比(%)表示,而在非常小的緩存中,現在是5%,例如300每秒對像數,但在非常大的緩存中,我們將談論數千MB

好吧,我現在就離開你,對此發表評論 並且還要考慮那些告訴我他們無法在魷魚3.5或更高版本中緩存和過濾https(SSL)頁面的人,我會盡快將它們帶給您,請繼續關注此博客。


本文內容遵循我們的原則 編輯倫理。 要報告錯誤,請單擊 這裡.

11條評論,留下您的評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   Ing。Jose Albert 他說:

    出色的補充第一部分!

    關於Squid的文獻很多,但是要獲得有關其最實用選項及其各自的解釋和可能的實際使用情況的信息並不總是那麼容易!

    和往常一樣,我期待它的第三部分!

    1.    布羅迪·戴勒 他說:

      謝謝你的評論。 正確,對所有相關元素的簡要說明以及一些最佳實踐設置。 但是,我總是很注意您的評論和自己的經驗。

  2.   us 他說:

    您好,我遇到了Windows更新和防病毒問題。 我的機構大約有120個人電腦。 你能給我一個如何改善這種情況的想法嗎? 感謝您的幫助和對本文的祝賀。

    1.    布羅迪·戴勒 他說:

      您好,非常感謝您的參與..如果能為您提供幫助,但是請您清楚說明問題所在,您無法下載更新? 您是否將代理放在Internet選項中,並將其放在瀏覽器的代理選項中?是否檢查了端口?還是要緩存這些更新?

      1.    us 他說:

        我需要的是,每當一台計算機下載Windows或防病毒更新時,它在高速緩存中停留大約一個月的時間,因此我想節省帶寬,因為每天早晨,每當所有計算機開始下載相同的內容時,更新每一個,連接飽和。

        謝謝你的幫助

    2.    馬里奧 他說:

      使用Squid的服務器可以正常工作,因為它們是簡單的未加密的http下載。 其他用於緩存的解決方案是WSUS和Altiris,這在公司中很常見。

      1.    us 他說:

        謝謝Mario,我會牢記這一點。

    3.    布羅迪·戴勒 他說:

      好的,我了解,請檢查此鏈接。 http://wiki.squid-cache.org/SquidFaq/WindowsUpdate。 要緩存防病毒軟件,您必須知道從何處下載更新以及以什麼擴展名(例如.exe)進行下載並將其緩存...

  3.   us 他說:

    謝謝你的幫助

  4.   埃里克 - 他說:

    早上好朋友,你能支持我的情況嗎? 由於我在debian 2.7上安裝了squid 9 .STABLE6,並且已進行了所有配置,並且將其安裝在10 pc環境中時,我收到了正常郵件,問題出在將其安裝90 pc時,問題僅持續幾秒鐘從那裡每個人都沒有互聯網。 你能支持我嗎?

  5.   約瑟·里瓦斯(JOSE RIVAS) 他說:

    出色的解釋,基本但非常清晰準確。 就我個人而言,我已經讀過的最好的解釋。
    我有一個問題,是否可以緩存apk和xapk等Android應用程序?
    無論文件的來源如何,配置動態緩存的正確方法是什麼?
    我使用pfSense 2.4.5。