Blekksprutbuffer - del 2

Blekksprut er ikke bare en proxy- og cache-tjeneste, den kan gjøre mye mer: administrere ACL (tilgangslister), filtrere innhold, den kan til og med gjøre ssl-filtrering selv i gjennomsiktig modus (proxy-metode - uten å måtte konfigurere i proxy-innstillinger fra nettleserne deres, det er som mann i midten, ingen vet at det er der). Så jeg ser ofte hvordan det fulle potensialet i dette programmet blir kastet bort ved ikke å vite hvordan jeg skal konfigurere hver av delene.

Nå er det interessante som blekksprut gjør, cachen (etter min mening). Du vil fortelle meg, hvorfor cache? Årsaken er enkel, bedre administrering av bruken av hastighet og båndbredde er det viktigste. Tenk nøye, 1000 personer i firmaet ditt konsulterer hvert 5. minutt, vanlige sider, Google, Hotmail, Gmail, osv ... slik at du skal laste ned bilder, bannere, reklame, html-innhold om og om igjen, alt dette er statiske ting, nei De endres så ofte, bedre å ha dem lagret i ditt lokale nettverk, og du leverer en kopi som du anser nylig i konfigurasjonene du vurderte.

Hvordan gjøre det? Enkelt med følgende setning:

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

Som jeg alltid sier, ikke tro på alt, så jeg inviterer deg til å lese fra den offisielle kilden. Jeg anbefaler deg å lese manualen til denne setningen HER

Setning oppdater_mønster Det vil alltid være vår etikett å legge til nye parametere i hurtigbufferen.

Viktig, cachelistene dine må være sekvensielle, for når den samsvarer med den første som samsvarer med objektet, vil den ikke fortsette å lese de andre reglene dine.

Regulære uttrykk er store og smÃ¥ bokstaver, derfor er flv ikke det samme som FLV, men du kan unngÃ¥ dette hvis du ønsker det ved Ã¥ bruke alternativet -i . Da ville det se slik ut refresh_pattern -i

'Min': er tiden (minutter) der et objekt vil bli betraktet som "nylig eller nytt", og hvis det ikke har en eksplisitt etikett som "utløpt". Som standard anbefaler blekksprut at det er 0, av grunner til at noen dynamiske applikasjoner kan oppføre seg merkelig, ren bla bla bla, virkelig skal denne verdien være et tall du anser som nyttig og effektivt for elementene du vil cache, eksempel: jpg, 1440 minutter (om dagen) virker bra for meg, det er ikke som om bildene av et innlegg endres hvert 5. minutt pÃ¥ en side.

'Prosent' Det er prosentandelen av et objekts alder (siden siste modifikasjon) som vil bli betraktet som «nylig eller fersk». La meg forklare, kanskje gjør en konstant omlasting eller oppdatering for Ã¥ se de siste endringene som ble gjort pÃ¥ en webside, blekksprut kunne vurdere om den allerede har, for eksempel, 50% av tiden fullført mellom minutter y max, laster ned objektet pÃ¥ nytt og gir deg en ny kopi.

'Maks' er grensen over eller lik 'Min' hvor lenge et objekt regnes som «nylig eller nytt», antar at et bilde av en side bare ble konsultert en gang av en bruker, det objektet har allerede nÃ¥dd sin tid minutter, men ikke max, nÃ¥r den blir spurt igjen, vil en hurtigkopi-kopi bli levert.

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

Disse alternativene ble laget for det meste for å ignorere forhåndsopprettede atferd i språk og protokoller, for å garantere effektiv bruk av hurtigbufferen.

override-expire

Det håndhever minimumstiden for et objekt, selv om serveren sendte en kortere utløpstid (for eksempel ting som header eller Cache-Control: max-age). Hvis vi gjør dette, vil det vises en "advarsel" som sier ting som dette "VIRKLER HTTP-standarden", men det er bare advarsler som vi kan ignorere. Nå hvis tiden en server sender er lengre, vil blekksprut ta tid (utløp) til serveren

override-lastmod

Forsterker minimumstiden for et element, selv om det nylig ble modifisert.

reload-into-ims

Den korte forklaringen er at den forhindrer at når vi trykker på oppdateringsknappen eller lager en ikke-hurtigbuffer-forespørsel, vil blekksprut levere hurtigbuffer hvis den ikke har blitt "endret siden" og / eller hvis det ikke er noen "overskrifter" på siden.

ignore-reload

Ignorer brukernes handling for å trykke på knappen for å laste inn på nytt eller oppdatere siden

ignore-no-store

Ignorer enhver regel i overskrifter for ikke å cache, for eksempel videoer

ignore-private

Ignorer regler i private innholdsoverskrifter som ikke skal bufres, eksempel: facebook-innhold.

refresh-ims

Squid kontakter serveren for å sikre om objektet er det nyeste. Hvis det er, vil det levere cache

store-stale

Blekksprut vil lagre alle disse svarene, selv om de ikke har en utløpsdato, er dette veldig upraktisk, ettersom de vanligvis ikke kan brukes på nytt. Hvis du bestemmer deg for å aktivere det, må du erklære maks-foreldet = NN

max-stale=NN

Hvis du aktiverte det ovennevnte, må du erklære en maksimal levetid for det svaret eller faktoren. Squid leverer ikke objekter av denne stilen, men kan validere den med kilden

Her er en tabell over hvordan tilstanden til fersk "FRESH" fungerer i henhold til verdiene vi har diskutert:

  • FERSK hvis utløper> nÃ¥, ellers STALE
  • STALE hvis alder> maks
  • FERSK hvis lm-faktor <prosent, ellers STALE
  • FERSK hvis alder <min annet FORFALT

Her er et eksempel på konfigurasjon for et bestemt selskap med mye diskplass, godt utstyr 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

Nå er hurtigbufferen ikke bare på harddisken, vi kan også cache RAM-minnet, denne verdien er for hver blekksprutprosess, så du må ta den i betraktning når du bruker viderekoblinger som blekksprutGuard

maximum_object_size_in_memory 1024 KB

Maksimal størrelse på objektet i minnet som blekksprut vil lagre i RAM. Du kan også erklære et minimum.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Som du kan se, er en policyen for erstatning av cache i RAM-minne og en annen på harddisken. Det er to retningslinjer GDSF og LFUDA. Den første søker å forbedre prosentandelen av cache-treff, med mange små objekter tilgjengelig, den andre søker det motsatte, det holder objekter i cache uavhengig av størrelse.

Spørsmålet som jeg forestiller meg at du stiller meg for øyeblikket er, hvilken bruk bruker jeg? Vel, hvis du tenker på at de gjør mange spørsmål i få omgivelser, og få nedlastinger bruker GDSF hvis de tvert imot gjør mange nedlastinger og få LFUDA-spørsmål. At hvis jeg anbefaler LFUDA når du skal gjøre, vet jeg ikke, cache i 1 TB disk, det er mer effektivt.

maximum_object_size 4 MB

Maksimal størrelse som et objekt kan ha må lagres

cache_dir aufs /media/proxy249/cache 100 16 256

Hvor hurtigbufferen vil bli lagret, er oppmerksomhet her, viktig hvis du bruker ufs, aufs eller diskd, alle 3 fungerer mer eller mindre likt, forskjellen er at aufs og diskd jobber med separate prosesser for å gjøre I / O-operasjoner på harddisken unngå at blekkspruteprosesser henger under disse operasjonene, i tillegg kan du angi antall tråder du vil ha for denne oppgaven. Jeg anbefaler aufs hvis du har et godt team.

Størrelse 100 (megabyte), kan du sette 100000 er nesten 100 GB avhenger av tilgjengeligheten din. 16 er antall mapper, og 256 er antall undermapper. Du kan spille med begge verdiene avhenger av hvor raske platene er og hvor mye ressurser du har.


cache_swap_low 90
cache_swap_high 95

Disse alternativene er erstatningsverdiene til objekter, det er minimums- og maksimumsverdien som vannmerke i henhold til blekksprut, der disse tallene er i prosent (%), og i en veldig liten cache ville 5% som dette akkurat nå være la oss si 300 objekter per sekund , men i veldig store cacher snakker vi om tusenvis av MB

Vel, der lar jeg deg være, dette foreløpig, kommenter og ta også hensyn til de som fortalte meg at de ikke kunne cache og filtrere https-sider (SSL) i blekksprut 3.5 eller høyere, jeg tar dem med deg snart, følg med på denne bloggen.