Кэш кальмаров - часть 2

Squid - это не только прокси и кеш-сервис, он может делать гораздо больше: управлять acl (списками доступа), фильтровать контент, он может даже выполнять ssl-фильтрацию даже в прозрачном режиме (метод прокси - без необходимости настраивать в настройках прокси. из их браузеров, это как человек посередине, никто не знает, что это там). Поэтому я обычно вижу, как весь потенциал этого приложения тратится впустую из-за того, что я не знаю, как настроить каждую из его частей.

Теперь самое интересное, что делает squid, - это кеш (на мой взгляд). Вы скажете мне, зачем нужен кеш? Причина проста, главное - лучше управлять скоростью и пропускной способностью. Подумайте внимательно, 1000 человек в вашей компании консультируются каждые 5 минут, общие страницы, Google, Hotmail, Gmail и т. Д., Так что вы собираетесь загружать изображения, баннеры, рекламу, html-контент снова и снова, все это статичные вещи, нет они меняются так часто, что лучше хранить их в вашей локальной сети, и вы доставляете копию, которую считаете недавней, в рамках рассмотренных вами конфигураций.

Как это сделать? Просто со следующим предложением:

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

Как я всегда говорю, не верьте всему, поэтому я приглашаю вас читать из официального источника. Я рекомендую вам прочитать руководство к этому предложению ЗДЕСЬ

Приговор refresh_pattern Наш лейбл всегда будет добавлять новые параметры в кеш.

Важно, что ваши списки кешей должны быть последовательными, потому что, как только они совпадут с первым, который соответствует объекту, он не будет продолжать читать ваши другие правила.

Регулярные выражения чувствительны к регистру, поэтому flv - это не то же самое, что FLV, но вы можете избежать этого, если хотите, используя параметр -i . Тогда это выглядело бы так обновить_паттерн -i

«Мин»: - время (в минутах), в течение которого объект будет считаться «недавним или новым», и если для него нет явной метки «истек». По умолчанию squid рекомендует, чтобы оно было равно 0, из-за того, что некоторые динамические приложения могут вести себя странно, чисто бла-бла-бла, на самом деле это значение должно быть числом, которое вы считаете полезным и эффективным для элементов, которые вы хотите кэшировать, пример: jpg, 1440 минут (в день) мне кажется нормальным, это не похоже на то, что изображения поста меняются каждые 5 минут на странице.

'Процент' Это процент возраста объекта (от последней модификации), который будет считаться «недавним или свежим». Позвольте мне объяснить, возможно, выполняя постоянную перезагрузку или обновление, чтобы увидеть последние изменения, которые были внесены на веб-страницу, squid мог бы рассмотреть, если он уже, скажем, 50% времени завершился между мин y Макс, повторно загрузите этот объект из Интернета и дайте вам новую копию.

'Максимум' предел больше или равен 'Мин' как долго объект считается «недавним или свежим», предположим, что изображение какой-либо страницы использовалось пользователем только один раз, этот объект уже достиг своего времени мин, но не Макс, затем при повторном запросе будет доставлена ​​копия кеша.

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

Эти параметры были сделаны в основном для того, чтобы игнорировать предустановленное поведение в языках и протоколах, чтобы гарантировать эффективное использование кеша.

override-expire

Он обеспечивает минимальное время объекта, даже если сервер отправил более короткое время истечения срока действия (например, заголовок или Cache-Control: max-age). Если мы сделаем это, появится «предупреждение» вроде «НАРУШАЕТ стандарт HTTP», но это просто предупреждения, которые мы можем игнорировать. Теперь, если время отправки сервером больше, тогда squid будет принимать время (истечение срока) сервера

override-lastmod

Увеличивает минимальное время элемента, даже если этот элемент был недавно изменен.

reload-into-ims

Краткое объяснение состоит в том, что это предотвращает то, что когда мы нажимаем кнопку обновления или делаем запрос без кеширования, squid доставит кеш, если он не был «изменен с тех пор» и / или если на странице нет «заголовков».

ignore-reload

Игнорировать действия пользователей по нажатию кнопки перезагрузки или обновления страницы

ignore-no-store

Игнорируйте любое правило в заголовках, чтобы не кешировать, например видео

ignore-private

Игнорируйте любые правила в заголовках приватного контента, которые не должны кэшироваться, например: контент facebook.

refresh-ims

Squid связывается с сервером, чтобы убедиться, что объект самый новый. Если это так, то он доставит кеш

store-stale

Squid сохранит все эти ответы, даже если у них нет срока годности, это очень непрактично, поскольку их обычно нельзя использовать повторно. Если вы решите включить его, вы должны объявить max-stale = NN

max-stale=NN

Если вы включили вышеуказанное, вы должны объявить максимальное время жизни для этого ответа или фактора. Squid не доставляет объекты этого стиля, но может проверить его с помощью источника

Вот таблица того, как работает состояние «СВЕЖЕЕ» в соответствии со значениями, которые мы обсудили:

  • СВЕЖИЙ, если срок действия истекает> сейчас, иначе УСТАРЕЛ
  • УСТАРЕЛО, если возраст> макс.
  • СВЕЖИЙ, если lm-фактор <процент, иначе СТАЛО
  • СВЕЖИЙ, если возраст <мин., Иначе УСТАРЕВШИЙСЯ

Вот пример конфигурации для конкретной компании с большим объемом дискового пространства, хорошим оборудованием и хорошей пропускной способностью.

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

Теперь кеш находится не только на жестком диске, мы также можем кэшировать оперативную память, это значение предназначено для каждого процесса squid, поэтому вы должны учитывать это при использовании таких перенаправителей, как squidGuard

maximum_object_size_in_memory 1024 KB

Максимальный размер объекта в памяти, который squid будет хранить в RAM. Также можно объявить минимум.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Как видите, одна из них - это политика замены кеша в оперативной памяти, а другая - на жестком диске. Есть 2 политики GDSF и LFUDA. Первый стремится улучшить процент попаданий в кеш, имея под рукой много мелких объектов, второй - наоборот, он сохраняет объекты в кеше независимо от их размера.

Вопрос, который, как мне кажется, вы задаете мне в данный момент, звучит так: «Какая польза?» Что ж, если учесть, что в вашей среде они выполняют много запросов и мало загрузок используют GDSF, если, наоборот, они выполняют много загрузок и мало запросов LFUDA. Что если я рекомендую LFUDA, когда вы собираетесь делать, я не знаю, кеш на 1 ТБ диска, это более эффективно.

maximum_object_size 4 MB

Максимальный размер объекта, который может быть сохранен

cache_dir aufs /media/proxy249/cache 100 16 256

Обратите внимание, где будет храниться кеш, важно, если вы используете ufs, aufs или diskd, все 3 работают более или менее одинаково, разница в том, что aufs и diskd работают с отдельными процессами для выполнения операций ввода-вывода на жестком диске и избегайте зависания процессов squid во время этих операций, дополнительно на diskd вы можете указать количество потоков, которые у вас будут для этой задачи. Я рекомендую aufs, если у вас хорошая команда.

Размер 100 (мегабайт), можно поставить 100000, это почти 100гб в зависимости от вашей доступности. 16 - это количество папок, а 256 - количество подпапок. Вы можете играть с обоими значениями, в зависимости от того, насколько быстры ваши диски и сколько ресурсов у вас есть.


cache_swap_low 90
cache_swap_high 95

Эти параметры представляют собой заменяющие значения объектов, это минимальное и максимальное значение в качестве водяного знака в соответствии с squid, где эти числа указаны в процентах (%), а в очень маленьком кэше 5%, как это прямо сейчас, будет, скажем, 300 объектов в секунду , но в очень больших кэшах мы будем говорить о тысячах МБ

Ну вот и оставляю тебя, это пока, комментарий а также примите во внимание тех, кто сказал мне, что они не могут кэшировать и фильтровать https (SSL) страницы в squid 3.5 или выше, я скоро принесу их вам, следите за обновлениями этого блога.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

11 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Инженер Хосе Альберт сказал

    Отличное дополнение к первой части!

    Существует много литературы о Squid, но не всегда под рукой добраться до сути его наиболее практичных вариантов с соответствующими пояснениями и возможными сценариями реального использования!

    Как всегда, с нетерпением жду ее третью часть!

    1.    BrodyDalle сказал

      Спасибо за ваш комментарий. Это правильно, краткое описание всех соответствующих элементов и несколько настроек передового опыта. Однако я всегда внимательно отношусь к вашим комментариям и собственному опыту.

  2.   Artus сказал

    Здравствуйте, у меня проблема с обновлениями windows и антивирусом. У меня в учреждении около 120 компьютеров. Не могли бы вы дать мне идею, как исправить эту ситуацию. Спасибо за помощь и поздравляю со статьей.

    1.    BrodyDalle сказал

      Здравствуйте, спасибо за участие ... ну если я могу вам помочь, но хорошо объясните, в чем ваша проблема, вы не можете скачать обновления? Вы указали прокси в параметрах Интернета и то же самое в параметрах прокси вашего браузера? Вы проверили порты? Или вы хотите кэшировать эти обновления?

      1.    Artus сказал

        Мне нужно, чтобы каждый раз, когда компьютер загружает обновление Windows или антивирус, оно остается в кеше примерно на месяц, таким образом я хотел бы сэкономить пропускную способность, так как каждое утро каждый раз все компьютеры начинают загружать одни и те же обновления, и соединение прерывается.

        Спасибо за вашу помощь.

    2.    Марио сказал

      Сервер с Squid работает, так как это простые незашифрованные HTTP-загрузки. Другие решения для кеширования - это WSUS и Altiris, обычные для компаний.

      1.    Artus сказал

        Спасибо, Марио, буду иметь это в виду.

    3.    BrodyDalle сказал

      хорошо готово, я понял, проверьте эту ссылку. http://wiki.squid-cache.org/SquidFaq/WindowsUpdate. чтобы кэшировать антивирус, вы должны знать, откуда и под каким расширением загружаются обновления (например, .exe), и кешировать его ...

  3.   Artus сказал

    Спасибо за вашу помощь.

  4.   Эрик сказал

    Доброе утро, друзья, не могли бы вы поддержать меня в моем случае. так как у меня есть squid 2.7 .STABLE9 на debian 6, и у меня все настроено, и при его установке в среде 10 ПК я получаю обычную почту, проблема заключается в том, что я монтирую его на 90 ПК, он работает всего несколько секунд, и оттуда все они остались без интернета. Не могли бы вы поддержать меня?

  5.   ХОЗЕ РИВАС сказал

    Отличное объяснение, простое, но очень ясное и точное. Лично лучшее объяснение, которое я смог прочитать.
    У меня вопрос, можно ли кешировать такие Android-приложения, как apk и xapk?
    И как правильно настроить динамический кеш независимо от происхождения файлов?
    Я использую pfSense 2.4.5.