Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
squid.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1.45 Mб
Скачать

12.23 Почему некоторые предметы не попали кэшировать?

Чтобы определить, является ли данный объект может находиться в кэше, Squid принимает многие вещи во внимание. Текущий алгоритм (для Squid-2) идет что-то вроде этого:

  1. Ответы с Cache-Control: Частное не кэшируются.

  2. Ответы с Cache-Control: No-Cache не кэшируются.

  3. Ответы с Cache-Control: No-магазин не кэшируются.

  4. Ответы на запросы авторизации заголовоков кэшируемы ТОЛЬКО если Reponse включает Cache-Control: Public .

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

  6. Следующие состояния HTTP коды кэшируемы:

    • 200 OK

    • 203 Неавторитетная информация

    • 300 множественным выбором

    • 301 Перемещено окончательно

    • Прошли 410

Однако, если Squid получает один из этих ответов от кэша соседей, он НЕ будет храниться в кэше, если ВСЕ Дата , Last-Modified и Expires заголовок ответа отсутствуют. Это предотвращает такие объекты от отскакивая назад и вперед между братьями и сестрами навсегда.

  1. 302 Moved Временно ответ является кэшируемым ТОЛЬКО если ответ также включает Истекает заголовке.

  2. Следующие состояния HTTP коды `` негативно кэшировать'' на короткий промежуток времени (настраивается):

    • не 204 No Content

    • 305 Use Proxy

    • 400 Bad Request

    • 403 Forbidden

    • 404 Not Found

    • 405 Method Not Allowed

    • 414 Request-URI Too Large

    • 500 Внутренняя ошибка сервера

    • 501 Не реализовано

    • 502 Bad Gateway

    • 503 Service Unavailable

    • Шлюз 504 Тайм-аут

  3. Все остальные коды состояния HTTP не кэшируются, включая:

    • 206 Partial Content

    • 303 See Other

    • 304 Not Modified

    • Несанкционированное 401

    • 407 Требуется проверка подлинности прокси

12.24 Что поддержания активности соотношение означает?

Поддержания активности соотношение проявляется в server_list диспетчером кэша страницы для Squid 2.

Это механизм, чтобы попытаться обнаружения кешам которые не могли бы быть в состоянии иметь дело с HTTP/1.1 постоянные соединения. Каждый раз, когда мы отправляем прокси-Connection: Keep-Alive заголовка запроса к соседу, мы считаем, сколько раз сосед прислал нам прокси-Connection: Keep-Alive ответ заголовке. Таким образом, поддержания активности отношение представляет собой отношение этих двух счетчиков.

Если соотношение остается выше 0,5, то мы продолжаем предполагать, сосед правильно реализует постоянные соединения. В противном случае, мы будем прекратить отправку поддержания активности заголовка запроса к этому соседу.

12.25 Как работает кэш Squid-алгоритм замены работы?

Squid использует LRU (наиболее давно используется) алгоритм для замены старых объектов кэша. Это означает, что объекты, которые не обращались в течение длительного периода времени удаляются в первую очередь. В исходном коде, StoreEntry-> lastref значение обновляется каждый раз, когда доступ к объекту.

Объекты не обязательно `` удалены по требованию.'' Вместо этого, регулярно мероприятие проходит периодически удалять объекты. Обычно это мероприятие проходит каждую секунду.

Squid поддерживает использование дискового кэша между низкими и высокими оценками воды. По умолчанию низкая оценка составляет 90%, и высокая оценка составляет 95% от общей настроить размер кэша. При использовании диска близка к низкой марки, замены менее агрессивны (меньше объектов удалены). При использовании близка к высокой марки, замена более агрессивный (более объектов удалены).

При выборе объектов для удаления, кальмар рассматривает некоторые количества объектов и определяет, какие могут быть удалены, а какие нет. Ряд факторов определить, действительно ли любой данный объект может быть удален. Если объект в настоящее время необходимо, или извлекаются из апстрим-сайт, он не будет удален. Если объект является `` негативно кэширования'' он будет удален. Если объект имеет секретный ключ кэша, он будет удален (не было бы никаких оснований держать его - потому что ключ является частным, оно никогда не может быть найден'' `` последующих запросов). Наконец, если время, прошедшее с последнего доступа больше, чем пороговое значение LRU, объект будет удален.

Значение LRU порог вычисляется динамически на основе текущего размера кэша и низких и высоких марок. Порог LRU экспоненциально масштабируется между высоким и низким водяные знаки. Когда размер своп магазин находится рядом с малой воды, порог LRU является большим. Когда размер свопа магазине рядом с отметки максимального уровня, порог LRU мал. Порог автоматически подстраивается под скорость входящих запросов. В самом деле, когда размер кэша стабилизировалась, порог LRU представляет, сколько времени требуется, чтобы заполнить (или полностью заменить) кэш по текущему курсу запросу. Типичные значения порогового LRU от 1 до 10 дней.

Вернуться к выбору объектов для удаления. Очевидно, что это не возможно, чтобы проверить каждый объект в кэш каждый раз, когда нам нужно удалить некоторые из них. Мы можем только проверить небольшое подмножество каждый раз. То, каким образом это реализовано очень отличается между Squid-1.1 и Squid-2.

Squid 1.1

Хранение кеш реализован как хэш-таблицу с некоторым количеством "хэш". Squid-1.1 сканирует одно ведро за один раз и сортирует все объекты в ведре их LRU возраста. Объекты с возрастом LRU через порог удаляются. Скорость сканирования регулируется таким образом, что она занимает около 24 часов, чтобы сканировать весь кэш. Магазин ведра рандомизированных так что мы не всегда сканирует тот же ведра, в то же время дня.

Этот алгоритм имеет некоторые недостатки. Потому что мы только сканировать одно ведро, там будет лучше, кандидатами на удаление в некоторых других 16 000 или около ведра. Кроме того, QSort () функция может занять некоторое нетривиальное количество процессорного времени, в зависимости от того, сколько записей в каждом ведре.

Squid 2

Для Squid-2 мы устранили необходимость использовать QSort () по времени индексирования кэшировать объекты в автоматически сортируются связанный список. Каждый раз, когда доступ к объекту, он будет перемещен в верхней части списка. В течение долгого времени, наименее используемых объектов мигрируют в нижней части списка. При поиске объектов для удаления, нам нужно только проверить последние 100 или около объектов в списке. К сожалению, этот подход повышает нашу памяти из-за необходимости хранить три дополнительных указателей на объект кэша. Но для Squid-2 мы все еще перед игрой, потому что мы также заменили текстовые ключи кэша с MD5-хэшей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]