Blæksprutte-cache - del 2

Blæksprutte er ikke kun en proxy- og cachetjeneste, den kan gøre meget mere: administrer ACL (adgangslister), filterindhold, den kan endda lave ssl-filtrering selv i gennemsigtig tilstand (proxymetode - uden at skulle konfigurere i proxyindstillinger fra deres browsere er det som en mand i midten, ingen ved, at det er der). Så jeg ser ofte, hvordan det fulde potentiale i denne applikation spildes ved ikke at vide, hvordan man konfigurerer hver af dens dele.

Nu er det interessante, som blæksprutte gør, cachen (efter min mening). Du vil fortælle mig, hvorfor cache? Årsagen er enkel, bedre styre brugen af ​​din hastighed og båndbredde, det er det vigtigste. Tænk nøje, 1000 mennesker i din virksomhed konsulterer hvert 5. minut, almindelige sider, Google, Hotmail, Gmail osv ... så du vil downloade billeder, bannere, reklamer, html-indhold igen og igen, alle disse er statiske ting, nej De ændres så ofte, bedre at have dem gemt i dit lokale netværk, og du leverer en kopi, som du anser for nyligt inden for de konfigurationer, du overvejede.

Hvordan gør man det? Enkel med følgende sætning:

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

Som jeg altid siger, skal du ikke tro på alt, så jeg opfordrer dig til at læse fra den officielle kilde. Jeg anbefaler at læse manualen til denne afgørelse HER.

Refresh_pattern - sætningen vil altid være vores tag til at tilføje nye parametre til cachen.

Vigtigt, dine cachelister skal være sekventielle, for når den matcher den første, der matcher objektet, fortsætter den ikke med at læse dine andre regler

Regulære udtryk skelner mellem store og små bogstaver, så flv er ikke det samme som FLV, men du kan undgå dette, hvis du ønsker det, ved at bruge -i- indstillingen . Så ville det se sådan ud: refresh_pattern -i

'Min': Dette er den tid (i minutter), hvor et objekt betragtes som "nyt", hvis det ikke har et eksplicit "udløbet"-tag. Som standard anbefaler Squid 0, fordi nogle dynamiske applikationer kan opføre sig mærkeligt. Denne værdi bør egentlig være et tal, du anser for nyttigt og effektivt for de elementer, du vil cache. For eksempel synes 1440 minutter (én dag) at være fint for mig for JPG'er; det er ikke som om billederne i et indlæg på en hjemmeside ændrer sig hvert 5. minut.

'Procent' er den procentdel af et objekts alder (siden den sidste ændring), der vil blive betragtet som "nylig" eller "frisk". Hvis du for eksempel konstant genindlæser eller opdaterer en webside for at se de seneste ændringer, kan Squid overveje, at hvis objektet har nået f.eks. 50 % af tiden mellem minimums- og maksimumværdierne , vil det downloade objektet fra internettet igen og give dig en frisk kopi.

'Max' er grænsen over eller lig med 'Min' for, hvor længe et objekt betragtes som "nyligt eller friskt". Antag, at et billede på en side kun er blevet vist én gang af en bruger; objektet har allerede nået sin minimumstid , men ikke den maksimale tid . Så når det vises igen, leveres en cachelagret kopi.

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

Disse muligheder blev hovedsagelig foretaget for at ignorere forudbestemte adfærd på sprog og protokoller for at garantere en effektiv brug af cachen.

override-expire

Det håndhæver minimumobjektet for et objekt, selvom serveren sendte en kortere timeout (f.eks. Ting som header eller Cache-Control: max-age). Hvis vi gør dette, vises en "advarsel", der siger ting som denne "VIRKLER HTTP-standarden", men det er bare advarsler, som vi kan ignorere. Hvis den tid en server sender er længere, tager blæksprutte nu serverens tid (udløb)

override-lastmod

Forstærker den minimale tid for en vare, selvom den for nylig blev ændret.

reload-into-ims

Den korte forklaring er, at det forhindrer, at når vi trykker på opdateringsknappen eller fremsætter en anmodning om ikke-cache, vil blæksprutter levere cache, hvis den ikke er blevet "ændret siden", og / eller hvis der ikke er nogen "overskrifter" på siden.

ignore-reload

Ignorer brugernes handling for at trykke på knappen Genindlæs eller opdater siden

ignore-no-store

Ignorer enhver regel i overskrifter for ikke at cache, f.eks. Videoer

ignore-private

Ignorer eventuelle regler i private indholdsoverskrifter, der ikke skal cachelagres, f.eks. Facebook-indhold.

refresh-ims

Blæksprutter kontakter serveren for at sikre, om objektet er det nyeste. Hvis det er tilfældet, leverer det cache

store-stale

Blæksprutte gemmer alle disse svar, selvom de ikke har en udløbsdato, er dette meget upraktisk, da de normalt ikke kan genbruges. Hvis du beslutter at aktivere det, skal du erklære max-stale = NN

max-stale=NN

Hvis du aktiverede ovenstående, skal du erklære en maksimal levetid for det svar eller den faktor. Blæksprutte leverer ikke objekter af denne stil, men kan validere det med kilden

Her er en tabel over, hvordan tilstanden af ​​frisk "FRESH" fungerer i henhold til de værdier, vi har diskuteret:

  • FRISK hvis udløber> nu, ellers STALE
  • STALE hvis alder> maks
  • FRISK hvis lm-faktor <procent, ellers FORFARET
  • FRISK hvis alder <min ellers FORALT

Her er et eksempel pĂĄ en konfiguration for et bestemt firma med meget diskplads, godt udstyr og god bĂĄndbredde

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 er caching ikke kun på harddisken; vi kan også cache i RAM. Denne værdi er pr. Squid-proces, så du bør tage den i betragtning, når du bruger omdirigeringer som SquidGuard.

maximum_object_size_in_memory 1024 KB

Den maksimale størrelse på objektet i hukommelsen, som blæksprutter gemmer i RAM. Du kan også erklære et minimum.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Som du kan se, er den ene en politik for udskiftning af cache i RAM-hukommelse og en anden på harddisken. Der er 2 politikker GDSF og LFUDA. Den første søger at forbedre procentdelen af ​​cache-hits, med mange små objekter ved hånden, den anden søger det modsatte, det holder objekter i cache uanset deres størrelse.

Det spørgsmål, som jeg forestiller mig, at du stiller mig i øjeblikket, er, hvad bruger jeg? Nå, hvis du overvejer at de i dit miljø gør mange forespørgsler, og få downloads bruger GDSF, hvis de tværtimod gør mange downloads og få LFUDA-forespørgsler . At hvis jeg anbefaler LFUDA, når du skal gøre det, ved jeg det ikke, cache i 1 TB disk, det er mere effektivt.

maximum_object_size 4 MB

Den maksimale størrelse, som et objekt muligvis skal lagres

cache_dir aufs /media/proxy249/cache 100 16 256

Hvor cachen gemmes, er opmærksomhed her, vigtigt, hvis du bruger ufs, aufs eller diskd, alle 3 fungerer mere eller mindre ens, forskellen er, at aufs og diskd arbejder med separate processer for at udføre I / O-operationerne på harddisk og undgå, at blæksprutteprocesser hænger under disse operationer. Desuden kan diskd du angive antallet af tråde, du har til denne opgave. Jeg anbefaler aufs, hvis du har et godt hold.

Størrelse 100 (megabyte), du kan sætte 100000 er næsten 100 GB afhænger af din tilgængelighed. 16 er antallet af mapper, og 256 er antallet af undermapper. Du kan spille med begge værdier afhænger af, hvor hurtige dine diske er, og hvor mange ressourcer du har.


cache_swap_low 90
cache_swap_high 95

Disse muligheder er erstatningsværdierne for objekter, det er minimums- og maksimumværdien som vandmærke ifølge blæksprutte, hvor disse tal er i procent (%), og i en meget lille cache ville 5% som dette lige nu være Lad os sige 300 objekter pr. sekund, men i meget store cacher taler vi om tusinder af MB

Nå, det var alt for nu. Kommentér, og tag også dem i betragtning, der fortalte mig, at de ikke kunne cache og filtrere HTTPS (SSL) sider i Squid 3.5 eller nyere; jeg bringer det til jer snart, så følg med på denne blog.


Tilføj som foretrukken kilde i Google