Фил Карлтон-то сказал, “ Есть только два жестких вещей в области компьютерных наук: кэш недействительным и называя вещи .
” Эта статья о труднее из этих двух: кэш invalidation.Это направлено на читателей, которые уже работают с лаком кэша.Чтобы узнать больше об этом, вы найдете справочную информацию в “ Ускорить ваш мобильный сайт с Varnish 1 .”
10 мкс (или 250 миллисекунд) : Это разница между доставку кэшу и доставки промах кэша.Как часто вы получаете последний будет зависеть от эффективности кэш-— это известно как промах кэша зависит от двух факторов: объем трафика и среднее время жизни (TTL), который является “удар скорости.”Число, указывающее, как долго кэшу разрешено сохранить объект.Как системных администраторов и разработчиков, мы не можем сделать многое о трафике, но мы можем влиять на TTL .
Однако, чтобы иметь высокий TTL, мы должны быть в состоянии признать недействительными объектов из кэша, так что мы избегаем выступающей черствый содержание.С лаком кэша, есть множество способов сделать это.Мы будем изучать наиболее распространенные способы и как развернуть их .
Лак делает кучу других вещей, а также, но его кэширования услуги являются наиболее популярными. Кэш ускорить веб-служб, служа в кэше статический content.Когда лак кэш доставки кэшу, как правило, только свалки кусок памяти в гнездо.Лак кэш так быстро, что, на современном оборудовании, мы на самом деле измерять время отклика в микросекундах
Кэширование isn’ т всегда так просто, как мы думаем,;несколько моментов и проблем может занять довольно много нашего времени, чтобы овладеть.( Изображение credits 2 )
При использовании кэш, вы должны знать, когда, чтобы выселить содержимое из кэша.Если у вас нет пути к выселить содержание, то вы бы рассчитывать на кэш, чтобы тайм-аут объекта после определенного количества времени.Это один из методов, но вряд ли наиболее оптимальное решение.Лучше всего было бы, чтобы лак кэш сохранить объект в памяти навсегда (в основном), а затем рассказать объект, когда, чтобы обновить.Давайте вдаваться в подробности о том, как достичь этой .
HTTP Purging
HTTP продувки самый простой из этих методов.Вместо отправки GET /url
лакировать, вы послали бы PURGE /url
.Лак затем отбросить этот объект из кэша.Добавить список контроля доступа к лак, так что не кто-нибудь может очистить предметы из кэша;кроме того, что, хотя, ты домабесплатно .
acl purge {
"localhost";
"192.168.55.0"/24;
}
sub vcl_recv {
# allow PURGE from localhost and 192.168.55...
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return (lookup);
}
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
}
Недостатки | Purging__2
HTTP продувка дотягивает, когда часть контента имеет сложную взаимосвязь с URL, он появляется на.Новость, например, может показать на ряде URL.Статья может иметь вид рабочего стола и мобильного вид, и это может показать на странице раздела и на первой странице.Таким образом, вам придется либо получить систему управления контентом, чтобы отслеживать все эти проявления или пусть лак сделает это за вас.Для того, чтобы лак сделать это, вы должны использовать запреты, которые мы получим в настоящее .
Bans
Запрет функция характерные для лака и один, который часто понимается неправильно.Это позволяет запретить лак от отбывания определенного содержания в памяти, заставляя лак для извлечения новых версий этих страниц .
Интересным аспектом является как определить, какие страницы ban.Лак имеет язык, который обеспечивает немного гибкости.Вы могли бы сказать лак запретить давая команду запрет в интерфейсе командной строки, как правило, подключая к нему varnishadm
.Вы также можете сделать это с помощью языка конфигурации Лак (VCL), которая обеспечивает простой способ для реализации HTTP-основе запрета .
Давайте начнем с примера.Предположим, что мы должны очистить наш сайт всех изображений .
> ban obj.http.content-type ~ “^image/”
Результатом этого является то, что для всех объектов в памяти, заголовок HTTP ответа Content-Type
будет соответствовать регулярное выражение ^image/
, который будет недействительным сразу .
Вот что происходит в лак.Во-первых, команда запрет ставит запрет на “бан-лист.” Когда эта команда находится в списке запрета, каждый кэше, который служит объектом старше самого запрета начнет посмотрите на список запрета и сравнить объектзапрещает в списке.Если объект соответствует, то лак убивает его и извлекает новую.Если объект не соответствует, то лак будет сделать к сведению его так, что он не раз проверить .
Давайте строить на нашем примере.Теперь мы только запретить изображений, которые помещены где-то в /feature
URL.Обратите внимание на логическую “и” оператора, &&
.
> ban obj.http.content-type ~ “^image/” && req.url ~ “^/feature”
Вы заметите, что он говорит, obj.http.content-type
и req.url
.В первой части запрета, мы обращаемся к атрибуту объекта, хранящегося в лак.В последнем, мы ссылаемся на части запроса для объекта.Это может быть немного нетрадиционный, но вы можете использовать атрибуты на просьбу аннулировать объекты в кэше.Теперь, req.url
обычно не хранится в объекте, так ссылаясь на просьбы Единственное, что мы можем сделать здесь. Вы можете использ …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров