Squid nu este doar un serviciu proxy și cache, poate face mult mai mult: gestionează acl (liste de acces), filtrează conținutul, poate face chiar filtrare ssl chiar și în modul transparent (metoda proxy - fără a fi nevoie să configurezi în setările proxy din browserele lor, este ca un om în mijloc, nimeni nu știe că este acolo). Așa că văd în mod obișnuit cum se pierde întregul potențial al acestei aplicații, neștiind cum să configurați fiecare dintre părțile sale.
Acum lucrul interesant pe care îl face calmarul este cache-ul (după părerea mea). Îmi veți spune de ce cache? Motivul este simplu, gestionați mai bine utilizarea vitezei dvs. și lățimea de bandă este principalul lucru. Gândiți-vă bine, 1000 de persoane din compania dvs. consultând la fiecare 5 minute, pagini obișnuite, Google, Hotmail, Gmail, etc ... astfel încât să descărcați imagini, bannere, publicitate, conținut html de mai multe ori, toate acestea sunt lucruri statice, nu acestea se schimbă atât de frecvent, mai bine să le aveți stocate în rețeaua locală și livrați o copie pe care o considerați recentă în configurațiile pe care le-ați luat în considerare.
Cum se face? Simplu cu următoarea propoziție:
refresh_pattern [-i] regex min percent max [options]
Așa cum spun întotdeauna, nu credeți totul, așa că vă încurajez să citiți din sursa oficială. Recomand să citiți manualul pentru această hotărâre AICI.
Instrucțiunea refresh_pattern va fi întotdeauna eticheta noastră pentru adăugarea de noi parametri în cache.
Important, listele cache trebuie să fie secvențiale, deoarece odată ce se potrivește cu prima care se potrivește cu obiectul, nu va continua să citească celelalte reguli
Expresiile regulate sunt sensibile la majuscule/minuscule, deci flv nu este același lucru cu FLV, dar puteți evita acest lucru dacă doriți folosind opțiunea -i . Atunci ar arăta astfel: refresh_pattern -i
„Min”: Acesta este timpul (în minute) în care un obiect va fi considerat „proaspăt” dacă nu are o etichetă explicită „expirat”. În mod implicit, Squid recomandă 0, deoarece unele aplicații dinamice s-ar putea comporta ciudat. Această valoare ar trebui să fie un număr pe care îl considerați util și eficient pentru elementele pe care doriți să le stocați în cache. De exemplu, 1440 de minute (o zi) mi se pare suficient pentru JPG-uri; nu este ca și cum imaginile dintr-o postare de pe un site web s-ar schimba la fiecare 5 minute.
„Procentul” reprezintă procentul din vârsta unui obiect (de la ultima modificare) care va fi considerat „recent” sau „proaspăt”. De exemplu, dacă reîncărcați sau actualizați constant o pagină web pentru a vedea cele mai recente modificări, Squid ar putea considera că, dacă obiectul a ajuns, să zicem, la 50% din timp între valorile minime și maxime , va descărca din nou obiectul respectiv de pe internet și vă va oferi o copie nouă.
„Max” este limita mai mare sau egală cu „Min” pentru durata de timp considerată a unui obiect „recent sau proaspăt”. Să presupunem că o imagine de pe o pagină a fost vizualizată o singură dată de un utilizator; acel obiect a atins deja timpul minim , dar nu și timpul maxim . Așadar, atunci când este vizualizat din nou, va fi livrată o copie memorată în cache.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Aceste opțiuni au fost făcute în principal pentru a ignora comportamentele prestabilite în limbi și protocoale, pentru a garanta utilizarea eficientă a cache-ului.
override-expire
Aplică timpul minim al unui obiect, chiar dacă serverul a trimis un timp de expirare mai scurt (de exemplu, lucruri precum antetul sau Cache-Control: max-age). Dacă facem acest lucru, va apărea un „avertisment” care spune lucruri de genul acesta „VIOLĂ standardul HTTP”, dar acestea sunt doar avertismente pe care le putem ignora. Acum, dacă timpul trimis de un server este mai lung, atunci calmarul va dura timpul (expirarea) serverului
override-lastmod
Consolidează timpul minim al unui articol, chiar dacă acel articol a fost modificat recent.
reload-into-ims
Scurta explicație este că împiedică ca, atunci când apăsăm butonul de reîmprospătare sau să facem o cerere fără cache, calmarul să livreze cache dacă nu a fost „modificat de atunci” și / sau dacă nu există „antete” pe pagină.
ignore-reload
Ignorați acțiunea utilizatorilor de a apăsa butonul de reîncărcare sau reîmprospătare a paginii
ignore-no-store
Ignorați orice regulă din anteturi pentru a nu memora în cache, de exemplu pentru videoclipuri
ignore-private
Ignorați orice regulă din anteturile de conținut privat care nu ar trebui stocate în cache, de exemplu: conținutul de pe facebook.
refresh-ims
Squid contactează serverul, pentru a se asigura că obiectul este cel mai nou. Dacă este, atunci va livra memoria cache
store-stale
Squid va salva toate acele răspunsuri, chiar dacă nu au o dată de expirare, acest lucru este foarte practic, deoarece de obicei nu pot fi refolosite. Dacă decideți să o activați, trebuie să declarați max-stale = NN
max-stale=NN
Dacă ați activat cele de mai sus, trebuie să declarați o durată de viață maximă pentru acel răspuns sau factor. Squid nu livrează obiecte de acest stil, dar îl poate valida cu sursa
Iată un tabel cu modul în care funcționează starea „FRESH” în funcție de valorile pe care le-am discutat:
- FRESH dacă expiră> acum, altfel STALE
- STALE dacă vârsta> max
- FRESH if lm-factor <procent, altfel STALE
- FRESH if age <min else STALE
Iată un exemplu de configurație pentru o anumită companie cu mult spațiu pe disc, echipamente bune și lățime de bandă bună
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
Acum, memorarea în cache nu se face doar pe hard disk; putem memora și în memoria RAM. Această valoare este per proces Squid, așa că ar trebui să o luați în considerare atunci când utilizați redirectoare precum SquidGuard.
maximum_object_size_in_memory 1024 KB
Dimensiunea maximă a obiectului în memorie pe care calmarul îl va stoca în RAM. De asemenea, puteți declara un minim.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
După cum puteți vedea, una este politica pentru înlocuirea cache-ului în memoria RAM și alta pe hard disk. Există 2 politici GDSF și LFUDA. Primul caută să îmbunătățească procentajul de accesări ale cache-ului, având la îndemână multe obiecte mici, al doilea caută opusul, păstrează obiectele în cache, indiferent de mărimea lor.
Întrebarea pe care îmi închipui că mi-o puneți în acest moment este: Ce folos? Ei bine, dacă considerați că în mediul dvs. fac multe interogări și puține descărcări folosesc GDSF dacă dimpotrivă fac multe descărcări și puține interogări LFUDA. Că dacă recomand LFUDA când o să faceți, nu știu, cache în 1TB de disc, este mai eficient.
maximum_object_size 4 MB
Dimensiunea maximă pe care o poate avea un obiect trebuie să fie stocată
cache_dir aufs /media/proxy249/cache 100 16 256
Unde va fi stocată memoria cache, atenție aici, important este dacă utilizați ufs, aufs sau diskd, toate cele 3 funcționează mai mult sau mai puțin la fel, diferența este că aufs și diskd funcționează cu procese separate pentru a efectua operațiuni de I / O pe hard disk și evitați ca procesele de calamar să atârne în timpul acestor operații, în plus, puteți specifica numărul de fire pe care le veți avea pentru această sarcină. Recomand aufs dacă aveți o echipă bună.
Dimensiunea 100 (megaocteți), puteți pune 100000 este aproape 100 GB depinde de disponibilitatea dvs. 16 este numărul de foldere, iar 256 este numărul de sub-foldere. Puteți juca cu ambele valori depinde de cât de rapide sunt discurile dvs. și de cât de multe resurse aveți.
cache_swap_low 90
cache_swap_high 95
Aceste opțiuni sunt valorile de înlocuire a obiectelor, este valoarea minimă și maximă ca filigran în funcție de calmar, unde aceste numere sunt în procente (%) și într-un cache foarte mic, 5% ca acesta ar fi acum să spunem 300 de obiecte pe secundă , dar în cache-urile foarte mari am vorbi despre mii de MB
Ei bine, asta e tot pentru moment. Comentați și luați în considerare și pe cei care mi-au spus că nu pot stoca în cache și filtra paginile HTTPS (SSL) în Squid 3.5 sau o versiune ulterioară; vă voi spune în curând, așa că rămâneți pe fază cu acest blog.