Squid är inte bara en proxy- och cachetjänst, det kan göra mycket mer: hantera acl (åtkomstlistor), filtrera innehåll, det kan till och med göra ssl-filtrering även i transparent läge (proxymetod - utan att behöva konfigurera i proxyinställningar från sina webbläsare , det är som en man i mitten, ingen vet att den är där). Så jag ser ofta hur den här potentialens fulla potential går till spillo genom att inte veta hur man konfigurerar var och en av dess delar.
Nu är det intressanta som bläckfisk gör cachen (enligt min mening). Du kommer att berätta för mig, varför cache? Anledningen är enkel, bättre hantering av din hastighet och bandbredd är det viktigaste. Tänk noga, 1000 personer i ditt företag konsulterar var 5: e minut, vanliga sidor, Google, Hotmail, Gmail, etc ... så att du kommer att ladda ner bilder, banners, reklam, html-innehåll om och om igen, alla dessa är statiska saker, nej De ändras så ofta, bättre att ha dem lagrade i ditt lokala nätverk och du levererar en kopia som du anser vara nyligen inom de konfigurationer som du övervägde.
Hur man gör det? Enkelt med följande mening:
refresh_pattern [-i] regex min percent max [options]
Som jag alltid säger, tro inte på allt, så jag uppmuntrar dig att läsa från den officiella källan. Jag rekommenderar att du läser manualen för detta beslut HÄR.
Satsen refresh_pattern kommer alltid att vara vår tagg för att lägga till nya parametrar i cachen.
Viktigt, dina cachelistor måste vara sekventiella, för när den matchar den första som matchar objektet fortsätter den inte att läsa dina andra regler
Reguljära uttryck är skiftlägeskänsliga, så flv är inte samma sak som FLV, men du kan undvika detta om du vill genom att använda alternativet -i . Då skulle det se ut så här: refresh_pattern -i
'Min': Detta är den tid (i minuter) som ett objekt kommer att anses vara "nytt" om det inte har en explicit "expired"-tagg. Som standard rekommenderar Squid 0, eftersom vissa dynamiska applikationer kan bete sig konstigt. Detta värde bör egentligen vara ett tal som du anser vara användbart och effektivt för de element du vill cachelagra. Till exempel verkar 1440 minuter (en dag) vara bra för mig för JPG-filer; det är inte som att bilderna i ett inlägg på en webbplats ändras var 5:e minut.
'Procent' är den procentandel av ett objekts ålder (sedan den senaste ändringen) som kommer att betraktas som "nyligen" eller "nytt". Om du till exempel ständigt laddar om eller uppdaterar en webbsida för att se de senaste ändringarna, kan Squid anse att om objektet har nått, säg, 50 % av tiden mellan minimi- och maximivärdena , kommer det att ladda ner objektet från internet igen och ge dig en ny kopia.
'Max' är gränsen över eller lika med 'Min' för hur länge ett objekt anses vara "nyligen eller färskt". Anta att en bild på en sida bara visats en gång av en användare; det objektet har redan nått sin minimitid , men inte maxtiden . Så när det visas igen kommer en cachad kopia att levereras.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Dessa alternativ gjordes mestadels för att ignorera förinställda beteenden på språk och protokoll för att garantera effektiv användning av cachen.
override-expire
Det verkställer minimaltiden för ett objekt, även om servern skickade en kortare utgångstid (exempelvis saker som rubrik eller Cache-Control: max-age). Om vi gör detta visas en "varning" som säger saker som denna "VIOLIERAR HTTP-standarden" men det är bara varningar som vi kan ignorera. Om tiden som en server skickar är längre tar bläckfisk tid (utgång) för servern
override-lastmod
Förstärker minimitiden för ett objekt, även om det nyligen modifierades.
reload-into-ims
Den korta förklaringen är att den förhindrar att när vi trycker på uppdateringsknappen eller gör en begäran utan cache, kommer bläckfisk att leverera cache om den inte har "modifierats sedan" och / eller om det inte finns några "rubriker" på sidan.
ignore-reload
Ignorera användarnas åtgärd för att trycka på knappen Ladda om eller uppdatera sidan
ignore-no-store
Ignorera någon regel i rubriker som inte cachar, till exempel videor
ignore-private
Ignorera alla regler i privata innehållsrubriker som inte ska cachas, exempel: Facebook-innehåll.
refresh-ims
Squid kontaktar servern för att säkerställa om objektet är det nyaste. Om det är så kommer det att leverera cache
store-stale
Tioarmad bläckfisk kommer att spara alla dessa svar, även om de inte har ett utgångsdatum, är detta mycket opraktiskt eftersom de vanligtvis inte kan återanvändas. Om du väljer att aktivera det måste du deklarera max-inaktuell = NN
max-stale=NN
Om du aktiverat ovanstående måste du deklarera en maximal livslängd för det svaret eller faktorn. Squid levererar inte objekt av den här stilen men kan validera det med källan
Här är en tabell över hur tillståndet för färskt "FRESH" fungerar enligt de värden som vi har diskuterat:
- FRESH om utgår> nu, annars STALE
- STALE om ålder> max
- FRESH om lm-faktor <procent, annars STALE
- FÄRSK om ålder <min annars FÖRFALDIG
Här är ett exempel på konfiguration för ett specifikt företag med mycket diskutrymme, bra utrustning och bra bandbredd
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
Nu sker cachning inte bara på hårddisken; vi kan även cacha i RAM. Detta värde är per Squid-process, så du bör ta hänsyn till det när du använder omdirigerare som SquidGuard.
maximum_object_size_in_memory 1024 KB
Den maximala storleken på objektet i minnet som bläckfisk lagras i RAM. Du kan också förklara ett minimum.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
Som du kan se är en policy för att ersätta cache i RAM-minne och en annan på hårddisken. Det finns två policyer GDSF och LFUDA. Den första syftar till att förbättra andelen cache-träffar, med många små objekt till hands, den andra söker det motsatta, det håller objekt i cache oavsett storlek.
Frågan som jag föreställer mig att du ställer mig just nu är, vilken användning använder jag? Om du anser att de i din miljö gör många frågor och få nedladdningar använder GDSF om de tvärtom gör många nedladdningar och få LFUDA-frågor. Att om jag rekommenderar LFUDA när du ska göra det vet jag inte, cache i 1TB hårddisk, det är mer effektivt.
maximum_object_size 4 MB
Den maximala storleken som ett objekt kan behöva lagras
cache_dir aufs /media/proxy249/cache 100 16 256
Där cachen lagras är uppmärksamhet här, viktigt om du använder ufs, aufs eller diskd, alla 3 fungerar mer eller mindre samma, skillnaden är att aufs och diskd arbetar med separata processer för att göra I / O-operationer på hårddisken och undvik att bläckfiskprocesser hänger under dessa operationer, dessutom kan du ange hur många trådar du har för den här uppgiften. Jag rekommenderar aufs om du har ett bra team.
Storlek 100 (megabyte), du kan sätta 100000 är nästan 100 GB beror på din tillgänglighet. 16 är antalet mappar och 256 är antalet undermappar. Du kan spela med båda värdena beror på hur snabbt dina skivor är och hur mycket resurser du har.
cache_swap_low 90
cache_swap_high 95
Dessa alternativ är värdena för byte av objekt, det är det lägsta och högsta värdet som vattenstämpel enligt bläckfisk, där dessa siffror är i procent (%), och i en mycket liten cache skulle 5% så här just nu vara säg 300 objekt per sekund , men i mycket stora cachar skulle vi prata om tusentals MB
Nåväl, det var allt för nu. Kommentera, och ta även hänsyn till de som sa att de inte kunde cacha och filtrera HTTPS (SSL)-sidor i Squid 3.5 eller högre; jag återkommer snart, så håll utkik efter den här bloggen.