Squid cache - parte 2

Squid non è solo un servizio proxy e cache, può fare molto di più: gestire acl (elenchi di accesso), filtrare i contenuti, può persino eseguire il filtraggio ssl anche in modalità trasparente (metodo proxy - senza dover configurare nelle impostazioni proxy dal tuo browser, è come se fosse un uomo al centro, nessuno sa che c'è). Quindi vedo comunemente come il pieno potenziale di questa applicazione viene sprecato non sapendo come configurare ciascuna delle sue parti.

Ora la cosa interessante che fa squid è la cache (secondo me). Mi dirai perché la cache? Il motivo è semplice, gestisci meglio l'uso della tua velocità e larghezza di banda, è la cosa principale. Pensa attentamente, 1000 persone nella tua azienda si consultano ogni 5 minuti, pagine comuni, Google, Hotmail, Gmail, ecc ... in modo da scaricare immagini, banner, pubblicità, contenuti html più e più volte, tutte queste sono cose statiche, no cambiano così frequentemente, meglio averli memorizzati nella tua rete locale e consegnare una copia che consideri recente all'interno delle configurazioni che hai considerato.

Come si fa Semplice con la seguente frase:

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

Come dico sempre, non credete a tutto, quindi vi incoraggio a leggere la fonte ufficiale. Vi consiglio di consultare il manuale relativo a questa norma QUI.

L' istruzione refresh_pattern sarà sempre il nostro tag per aggiungere nuovi parametri alla cache.

Importante, gli elenchi della cache devono essere sequenziali, perché una volta che corrisponde al primo che corrisponde all'oggetto, non continuerà a leggere le altre regole.

Le espressioni regolari distinguono tra maiuscole e minuscole, quindi flv non è uguale a FLV, ma puoi evitarlo se lo desideri usando l' opzione -i . In tal caso, l'espressione sarebbe simile a questa: refresh_pattern -i

'Min': Questo è il tempo (in minuti) durante il quale un oggetto verrà considerato "aggiornato" se non ha un tag "scaduto" esplicito. Per impostazione predefinita, Squid consiglia 0, perché alcune applicazioni dinamiche potrebbero comportarsi in modo anomalo. Questo valore dovrebbe essere un numero che ritieni utile ed efficace per gli elementi che desideri memorizzare nella cache. Ad esempio, 1440 minuti (un giorno) mi sembrano adeguati per i file JPG; non è che le immagini in un post su un sito web cambino ogni 5 minuti.

La "percentuale" indica la percentuale dell'età di un oggetto (dall'ultima modifica) che verrà considerata "recente" o "aggiornata". Ad esempio, se si ricarica o si aggiorna costantemente una pagina web per visualizzare le ultime modifiche, Squid potrebbe considerare che, se l'oggetto ha raggiunto, diciamo, il 50% del tempo compreso tra i valori minimo e massimo , lo scaricherà nuovamente da Internet e ne fornirà una copia aggiornata.

'Max' è il limite, superiore o uguale a 'Min', per il quale un oggetto viene considerato "recente o aggiornato". Supponiamo che un'immagine su una pagina sia stata visualizzata una sola volta da un utente; quell'oggetto ha già raggiunto il suo tempo minimo , ma non il tempo massimo . Quindi, quando viene visualizzato di nuovo, verrà fornita una copia memorizzata nella cache.

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

Queste opzioni sono state realizzate principalmente per ignorare comportamenti prestabiliti in linguaggi e protocolli, al fine di garantire un utilizzo efficace della cache.

override-expire

Impone il tempo minimo di un oggetto, anche se il server ha inviato un tempo di scadenza più breve (cose come header o Cache-Control: max-age). Se lo facciamo, apparirà un "avviso" che dice cose come questa "VIOLA lo standard HTTP", ma si tratta solo di avvisi che possiamo ignorare. Ora, se il tempo che un server invia è più lungo, squid prenderà il tempo (scadenza) del server

override-lastmod

Rafforza il tempo minimo di un elemento, anche se l'elemento è stato modificato di recente.

reload-into-ims

La breve spiegazione è che impedisce che quando si preme il pulsante di aggiornamento o si effettua una richiesta senza cache, squid fornirà la cache se non è stata "modificata da" e / o se non ci sono "intestazioni" nella pagina.

ignore-reload

Ignora l'azione degli utenti per premere il pulsante di ricarica o di aggiornamento della pagina

ignore-no-store

Ignora qualsiasi regola nelle intestazioni da non memorizzare nella cache, ad esempio dei video

ignore-private

Ignora le regole nelle intestazioni dei contenuti privati ​​che non devono essere memorizzate nella cache, ad esempio: contenuto di Facebook.

refresh-ims

Squid contatta il server, per garantire se l'oggetto è l'ultimo. Se lo è, fornirà la cache

store-stale

Squid salverà tutte quelle risposte, anche se non hanno una data di scadenza, questo è molto poco pratico in quanto di solito non possono essere riutilizzate. Se decidi di abilitarlo devi dichiarare max-stale = NN

max-stale=NN

Se hai abilitato quanto sopra, devi dichiarare una durata massima per quella risposta o fattore. Squid non fornisce oggetti di questo stile ma può convalidarlo con l'origine

Ecco una tabella di come funziona lo stato "FRESH" in base ai valori che abbiamo discusso:

  • FRESCO se scade> adesso, altrimenti STALO
  • STALE se età> max
  • FRESCO se fattore lm <percentuale, altrimenti STALE
  • FRESCO se età <min altrimenti STALO

Di seguito è riportato un esempio di configurazione per un'azienda specifica con molto spazio su disco, buone apparecchiature e buona larghezza di banda

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

Ora la cache non si limita più al disco rigido; possiamo anche memorizzarla nella RAM. Questo valore è per ogni processo Squid, quindi è necessario tenerne conto quando si utilizzano reindirizzatori come SquidGuard.

maximum_object_size_in_memory 1024 KB

La dimensione massima dell'oggetto in memoria che squid salverà nella RAM. Puoi anche dichiarare un minimo.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Come puoi vedere, una è la politica per la sostituzione della cache nella memoria RAM e un'altra nell'hard disk. Ci sono 2 politiche GDSF e LFUDA. Il primo cerca di migliorare la percentuale di accessi alla cache, avendo molti piccoli oggetti a portata di mano, il secondo cerca il contrario, mantiene gli oggetti nella cache indipendentemente dalla loro dimensione.

La domanda che immagino tu mi stia ponendo in questo momento è: che uso ne uso? Bene, se consideri che nel tuo ambiente fanno molte query e pochi download usano GDSF se al contrario fanno molti download e poche query LFUDA. Che se raccomando LFUDA quando lo farai, non so, cache in 1 TB di disco, è più efficiente.

maximum_object_size 4 MB

La dimensione massima che un oggetto può avere per essere memorizzato

cache_dir aufs /media/proxy249/cache 100 16 256

Dove verrà memorizzata la cache, attenzione qui, l'importante è che se usi ufs, aufs o diskd, tutti e 3 funzionano più o meno allo stesso modo, la differenza è che aufs e diskd funzionano con processi separati per eseguire le operazioni di I / O sul disco rigido e evita che i processi squid si blocchino durante queste operazioni, inoltre diskd puoi specificare il numero di thread che avrai per questa attività. Consiglio aufs se hai una buona squadra.

Dimensione 100 (megabyte), puoi mettere 100000 è quasi 100 GB dipende dalla tua disponibilità. 16 è il numero di cartelle e 256 è il numero di sottocartelle. Puoi giocare con entrambi i valori a seconda della velocità dei tuoi dischi e di quante risorse hai.


cache_swap_low 90
cache_swap_high 95

Queste opzioni sono i valori di sostituzione dell'oggetto, è il valore minimo e massimo come filigrana secondo squid, dove questi numeri sono in percentuale (%), e in una cache molto piccola, il 5% come questo in questo momento sarebbe diciamo 300 oggetti al secondo , ma in cache molto grandi si parlerebbe di migliaia di MB

Bene, per ora è tutto. Commentate e tenete in considerazione anche coloro che mi hanno segnalato di non essere riusciti a memorizzare nella cache e filtrare le pagine HTTPS (SSL) in Squid 3.5 o versioni successive; vi fornirò presto una soluzione, quindi continuate a seguire questo blog.


Aggiungi come fonte preferita in Google