Cache Squid - Partie 2

Squid n'est pas seulement un service de proxy et de cache, il peut faire beaucoup plus: gérer acl (listes d'accès), filtrer le contenu, il peut même faire du filtrage ssl même en mode transparent (méthode proxy - sans avoir à configurer dans les paramètres du proxy depuis leurs navigateurs, c'est comme un homme au milieu, personne ne sait que c'est là). Je vois donc couramment comment tout le potentiel de cette application est gaspillé en ne sachant pas comment configurer chacune de ses parties.

Maintenant, la chose intéressante que fait squid est le cache (à mon avis). Vous me direz pourquoi le cache? La raison est simple, mieux gérer l'utilisation de votre vitesse et de votre bande passante est l'essentiel. Réfléchissez bien, 1000 personnes dans votre entreprise consultent toutes les 5 minutes, pages communes, Google, Hotmail, Gmail, etc ... pour que vous puissiez télécharger des images, des bannières, de la publicité, du contenu html encore et encore, tout cela est statique, non Ils changent si fréquemment, mieux vaut les avoir stockés dans votre réseau local et vous en fournissez une copie que vous considérez comme récente dans les configurations que vous avez envisagées.

Comment faire? Simple avec la phrase suivante:

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

Comme je le dis toujours, ne croyez pas tout ce que vous dites ; je vous encourage donc à consulter la source officielle. Je vous recommande de lire le manuel relatif à cette décision ICI.

L' instruction refresh_pattern servira toujours de balise pour ajouter de nouveaux paramètres au cache.

Important, vos listes de cache doivent être séquentielles, car une fois qu'elles correspondent à la première qui correspond à l'objet, il ne continuera pas à lire vos autres règles

Les expressions régulières sont sensibles à la casse, donc flv n'est pas identique à FLV, mais vous pouvez contourner ce problème en utilisant l' option -i . La commande ressemblera alors à ceci : refresh_pattern -i

« Min » : Il s'agit de la durée (en minutes) pendant laquelle un objet est considéré comme « frais » s'il ne possède pas d'étiquette « expiré » explicite. Par défaut, Squid recommande 0, car certaines applications dynamiques peuvent avoir un comportement inattendu. Cette valeur doit être adaptée aux éléments que vous souhaitez mettre en cache. Par exemple, 1 440 minutes (une journée) me semble convenable pour les fichiers JPG ; les images d'un article sur un site web ne changent pas toutes les 5 minutes.

Le « pourcentage Â» représente le pourcentage de l'âge d'un objet (depuis sa dernière modification) qui sera considéré comme « récent Â» ou « Ã  jour Â». Par exemple, si vous rechargez ou actualisez constamment une page Web pour voir les dernières modifications, Squid pourrait considérer que si l'objet a atteint, disons, 50 % du temps entre les valeurs minimale et maximale , il téléchargera à nouveau cet objet depuis Internet et vous en fournira une copie à jour.

« Max Â» correspond à la limite supérieure ou égale à « Min Â» de la durée pendant laquelle un objet est considéré comme « récent Â». Supposons qu'une image sur une page n'ait été vue qu'une seule fois par un utilisateur ; cet objet a déjà atteint sa durée minimale , mais pas sa durée maximale . Par conséquent, lors d'un prochain affichage, une copie en cache sera fournie.

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

Ces options ont été faites principalement pour ignorer les comportements préétablis dans les langages et les protocoles, afin de garantir une utilisation efficace du cache.

override-expire

Il applique le temps minimum d'un objet, même si le serveur a envoyé un délai d'expiration plus court (par exemple des choses comme l'en-tête ou Cache-Control: max-age). Si nous faisons cela, un "avertissement" apparaîtra disant des choses comme ceci "VIOLE le standard HTTP" mais ce ne sont que des avertissements que nous pouvons ignorer. Maintenant, si le temps qu'un serveur envoie est plus long, squid prendra le temps (expiration) du serveur

override-lastmod

Renforce la durée minimale d'un élément, même si cet élément a été récemment modifié.

reload-into-ims

La courte explication est que cela empêche que lorsque nous appuyons sur le bouton d'actualisation ou faisons une demande de non-cache, squid fournira le cache s'il n'a pas été "modifié depuis" et / ou s'il n'y a pas "d'en-tête" sur la page.

ignore-reload

Ignorer l'action des utilisateurs pour appuyer sur le bouton recharger ou actualiser la page

ignore-no-store

Ignorer toute règle dans les en-têtes pour ne pas mettre en cache, par exemple pour les vidéos

ignore-private

Ignorez toutes les règles dans les en-têtes de contenu privé qui ne doivent pas être mis en cache, par exemple: le contenu Facebook.

refresh-ims

Squid contacte le serveur pour s'assurer que l'objet est le plus récent. Si c'est le cas, il fournira le cache

store-stale

Squid enregistrera toutes ces réponses, même si elles n'ont pas de date d'expiration, c'est très peu pratique car elles ne peuvent généralement pas être réutilisées. Si vous décidez de l'activer, vous devez déclarer max-stale = NN

max-stale=NN

Si vous avez activé ce qui précède, vous devez déclarer une durée de vie maximale pour cette réponse ou ce facteur. Squid ne livre pas d'objets de ce style mais peut le valider avec la source

Voici un tableau du fonctionnement de l'état "FRESH" selon les valeurs dont nous avons discuté:

  • FRAIS si expire> maintenant, sinon STALE
  • STALE si âge> max
  • FRAIS si facteur lm <pour cent, sinon STALE
  • FRAIS si âge <min autre STALE

Voici un exemple de configuration pour une entreprise spécifique avec beaucoup d'espace disque, un bon équipement et une bonne bande passante

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

Désormais, la mise en cache ne se limite plus au disque dur ; elle peut également se faire en mémoire vive (RAM). Cette valeur est propre à chaque processus Squid ; il convient donc d'en tenir compte lors de l'utilisation de redirecteurs comme SquidGuard.

maximum_object_size_in_memory 1024 KB

La taille maximale de l'objet en mémoire que squid stockera dans la RAM. Vous pouvez également déclarer un minimum.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Comme vous pouvez le voir, l'une est la politique de remplacement du cache dans la mémoire RAM et une autre sur le disque dur. Il existe 2 politiques GDSF et LFUDA. Le premier cherche à améliorer le pourcentage de hits du cache, ayant de nombreux petits objets sous la main, le second cherche le contraire, il garde les objets en cache quelle que soit leur taille.

La question que j'imagine que vous me posez en ce moment est, quelle utilisation dois-je utiliser? Eh bien, si vous considérez que dans votre environnement, ils font beaucoup de requêtes et peu de téléchargements utilisent GDSF si au contraire ils font beaucoup de téléchargements et peu de requêtes LFUDA. Que si je recommande LFUDA quand vous allez faire, je ne sais pas, cache dans 1 To de disque, c'est plus efficace.

maximum_object_size 4 MB

La taille maximale qu'un objet peut avoir à stocker

cache_dir aufs /media/proxy249/cache 100 16 256

Où le cache sera stocké, attention ici, il est important que si vous utilisez ufs, aufs ou diskd, les 3 fonctionnent plus ou moins de la même manière, la différence est que aufs et diskd fonctionnent avec des processus séparés pour effectuer des opérations d'E / S sur le disque dur et éviter que les processus squid se bloquent pendant ces opérations, en plus diskd vous pouvez spécifier le nombre de threads que vous aurez pour cette tâche. Je recommande aufs si vous avez une bonne équipe.

Taille 100 (mégaoctets), vous pouvez mettre 100000 soit presque 100 Go selon vos disponibilités. 16 est le nombre de dossiers et 256 est le nombre de sous-dossiers. Vous pouvez jouer avec les deux valeurs en fonction de la vitesse de vos disques et de la quantité de ressources dont vous disposez.


cache_swap_low 90
cache_swap_high 95

Ces options sont les valeurs de remplacement d'objet, c'est la valeur minimale et maximale en filigrane selon squid, où ces nombres sont en pourcentage (%), et dans un très petit cache, 5% comme ça pour le moment serait disons 300 objets par seconde , mais dans de très grands caches, nous parlerions de milliers de Mo

Voilà, c'est tout pour le moment. N'hésitez pas à commenter et à prendre en compte les retours de ceux qui m'ont signalé l'impossibilité de mettre en cache et de filtrer les pages HTTPS (SSL) avec Squid 3.5 ou une version ultérieure ; une solution sera bientôt disponible, alors restez connectés à ce blog.


Ajouter comme source préférée dans Google