Tintenfisch-Cache - Teil 2

Squid ist nicht nur ein Proxy- und Cache-Dienst, es kann noch viel mehr: Verwalten von ACL (Zugriffslisten), Filtern von Inhalten, sogar SSL-Filtern auch im transparenten Modus (Proxy-Methode - ohne in den Proxy-Einstellungen konfigurieren zu müssen Von ihren Browsern aus ist es wie ein Mann in der Mitte, niemand weiß, dass es da ist. Daher sehe ich häufig, wie das volle Potenzial dieser Anwendung verschwendet wird, wenn ich nicht weiß, wie die einzelnen Teile konfiguriert werden.

Das Interessante an Squid ist (meiner Meinung nach) der Cache. Sie werden mir sagen, warum Cache? Der Grund ist einfach, die bessere Verwaltung der Nutzung Ihrer Geschwindigkeit und Bandbreite ist die Hauptsache. Überlegen Sie genau, 1000 Mitarbeiter in Ihrem Unternehmen beraten sich alle 5 Minuten, allgemeine Seiten, Google, Hotmail, Gmail usw., damit Sie immer wieder Bilder, Banner, Werbung und HTML-Inhalte herunterladen können. All dies sind statische Dinge, nein Sie ändern sich so häufig, dass sie besser in Ihrem lokalen Netzwerk gespeichert werden und Sie eine Kopie liefern, die Sie in den von Ihnen berücksichtigten Konfigurationen als aktuell betrachten.

Einfach geht's mit folgendem Satz:

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

Wie ich immer sage: Glauben Sie nicht alles. Deshalb empfehle ich Ihnen, die offizielle Quelle zu konsultieren. Ich rate Ihnen, das Handbuch zu dieser Regelung HIER zu lesen.

Die Anweisung refresh_pattern dient uns stets als Tag, um neue Parameter zum Cache hinzuzufügen.

Wichtig ist, dass Ihre Cache-Listen sequentiell sein müssen, da sie Ihre anderen Regeln nicht mehr lesen, sobald sie mit der ersten übereinstimmen, die mit dem Objekt übereinstimmt

Reguläre Ausdrücke unterscheiden zwischen Groß- und Kleinschreibung, daher ist „flv“ nicht dasselbe wie „FLV“. Sie können dies jedoch umgehen, indem Sie die Option `-i` verwenden . Der Befehl sähe dann so aus: `refresh_pattern -i`.

'Min': Dies ist die Zeit (in Minuten), nach der ein Objekt als „aktuell“ gilt, sofern es kein explizites „expired“-Tag besitzt. Standardmäßig empfiehlt Squid den Wert 0, da sich manche dynamische Anwendungen unerwartet verhalten könnten. Dieser Wert sollte jedoch individuell und für die zu cachenden Elemente sinnvoll sein. Beispielsweise erscheinen mir 1440 Minuten (ein Tag) für JPGs angemessen; schließlich ändern sich die Bilder in einem Website-Beitrag nicht alle 5 Minuten.

Der Wert „Prozent“ gibt den prozentualen Anteil des Alters eines Objekts (seit der letzten Änderung) an, der als „aktuell“ oder „neu“ gilt. Wenn Sie beispielsweise eine Webseite ständig neu laden oder aktualisieren, um die neuesten Änderungen zu sehen, könnte Squid davon ausgehen, dass das Objekt, sobald es beispielsweise 50 % der Zeit zwischen dem Minimal- und Maximalwert vergangen ist , erneut aus dem Internet heruntergeladen und Ihnen eine aktuelle Kopie bereitgestellt wird.

„Max“ ist der Grenzwert, ab dem „Min“ gilt, wie lange ein Objekt als „aktuell“ oder „neu“ gilt. Angenommen, ein Bild auf einer Seite wurde von einem Nutzer nur einmal angesehen; dieses Objekt hat bereits seine Mindestzeit erreicht , aber noch nicht die Höchstzeit . Wenn es also erneut angesehen wird, wird eine zwischengespeicherte Kopie geladen.

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

Diese Optionen wurden hauptsächlich verwendet, um vorher festgelegte Verhaltensweisen in Sprachen und Protokollen zu ignorieren, um die effektive Nutzung des Caches zu gewährleisten.

override-expire

Es erzwingt die Mindestzeit eines Objekts, selbst wenn der Server eine kürzere Ablaufzeit gesendet hat (Beispiel Dinge wie Header oder Cache-Control: max-age). Wenn wir dies tun, erscheint eine "Warnung" mit den Worten "VERLETZT den HTTP-Standard", aber das sind nur Warnungen, die wir ignorieren können. Wenn die Zeit, die ein Server sendet, länger ist, benötigt Squid die Zeit (Ablauf) des Servers

override-lastmod

Verstärkt die Mindestzeit eines Elements, auch wenn dieses Element kürzlich geändert wurde.

reload-into-ims

Die kurze Erklärung ist, dass verhindert wird, dass Squid beim Drücken der Aktualisierungsschaltfläche oder bei einer Anforderung ohne Cache einen Cache ausgibt, wenn er nicht seit "geändert" wurde und / oder wenn auf der Seite keine "Header" vorhanden sind.

ignore-reload

Ignorieren Sie die Aktion der Benutzer, um die Schaltfläche Seite neu laden oder aktualisieren zu drücken

ignore-no-store

Ignorieren Sie alle Regeln in Headern, die nicht zwischengespeichert werden sollen, z. B. Videos

ignore-private

Ignorieren Sie alle Regeln in privaten Inhaltsheadern, die nicht zwischengespeichert werden sollen. Beispiel: Facebook-Inhalte.

refresh-ims

Squid kontaktiert den Server, um sicherzustellen, dass das Objekt das neueste ist. Wenn dies der Fall ist, wird der Cache bereitgestellt

store-stale

Squid speichert alle diese Antworten, auch wenn sie kein Ablaufdatum haben. Dies ist sehr unpraktisch, da sie normalerweise nicht wiederverwendet werden können. Wenn Sie es aktivieren möchten, müssen Sie max-stale = NN deklarieren

max-stale=NN

Wenn Sie die oben genannten Optionen aktiviert haben, müssen Sie eine maximale Lebensdauer für diese Antwort oder diesen Faktor angeben. Squid liefert keine Objekte dieses Stils, kann sie jedoch mit der Quelle validieren

Hier ist eine Tabelle, wie der Zustand von frischem "FRISCH" gemäß den von uns diskutierten Werten funktioniert:

  • FRISCH, wenn> jetzt abläuft, sonst STALE
  • STALE wenn Alter> max
  • FRISCH, wenn lm-Faktor <Prozent, sonst STALE
  • FRISCH, wenn Alter <min sonst STALE

Hier ist eine Beispielkonfiguration für ein bestimmtes Unternehmen mit viel Speicherplatz, guter Ausrüstung und guter Bandbreite

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

Caching findet nun nicht mehr nur auf der Festplatte statt; wir können auch im RAM cachen. Dieser Wert gilt pro Squid-Prozess, daher sollten Sie ihn bei der Verwendung von Redirectoren wie SquidGuard berücksichtigen.

maximum_object_size_in_memory 1024 KB

Die maximale Größe des Objekts im Speicher, das der Tintenfisch im RAM speichert. Sie können auch ein Minimum deklarieren.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Wie Sie sehen können, ist eine die Richtlinie für das Ersetzen des Cache im RAM-Speicher und eine andere auf der Festplatte. Es gibt 2 Richtlinien GDSF und LFUDA. Der erste versucht, den Prozentsatz der Cache-Treffer zu verbessern, da viele kleine Objekte zur Hand sind, der zweite versucht das Gegenteil, er hält Objekte unabhängig von ihrer Größe im Cache.

Die Frage, die Sie sich im Moment stellen, ist, welchen Nutzen ich habe. Wenn Sie bedenken, dass in Ihrer Umgebung viele Abfragen und wenige Downloads GDSF verwenden, wenn sie im Gegenteil viele Downloads und wenige LFUDA-Abfragen durchführen. Wenn ich LFUDA empfehle, wenn Sie es tun, weiß ich nicht, es in 1 TB Festplatte zwischenzuspeichern, ist es effizienter.

maximum_object_size 4 MB

Die maximale Größe, die ein Objekt gespeichert werden muss

cache_dir aufs /media/proxy249/cache 100 16 256

Wo der Cache gespeichert wird, ist hier wichtig. Wenn Sie ufs, aufs oder diskd verwenden, arbeiten alle 3 mehr oder weniger gleich. Der Unterschied besteht darin, dass aufs und diskd mit getrennten Prozessen arbeiten, um E / A-Operationen auf der Festplatte und auszuführen Vermeiden Sie, dass Squid-Prozesse während dieser Vorgänge hängen bleiben. Außerdem können Sie auf diskd die Anzahl der Threads angeben, die Sie für diese Aufgabe haben werden. Ich empfehle aufs, wenn Sie ein gutes Team haben.

Größe 100 (Megabyte), Sie können 100000 setzen, ist fast 100 GB abhängig von Ihrer Verfügbarkeit. 16 ist die Anzahl der Ordner und 256 ist die Anzahl der Unterordner. Sie können mit beiden Werten spielen, abhängig davon, wie schnell Ihre Discs sind und wie viele Ressourcen Sie haben.


cache_swap_low 90
cache_swap_high 95

Diese Optionen sind die Objektersetzungswerte. Dies ist der minimale und maximale Wert als Wasserzeichen gemäß Tintenfisch, wobei diese Zahlen in Prozent (%) angegeben sind. In einem sehr kleinen Cache wären 5% wie diese derzeit 300 Objekte pro Sekunde , aber in sehr großen Caches würden wir über Tausende von MB sprechen

So, das war’s fürs Erste. Hinterlasst gerne Kommentare und berücksichtigt dabei auch diejenigen, die mir mitgeteilt haben, dass sie HTTPS-Seiten (SSL) in Squid 3.5 oder höher nicht cachen und filtern können. Ich werde das Problem bald beheben, also bleibt dran!


Als bevorzugte Quelle in Google hinzufügen