Кэш недействительным Стратегии лаком Cache

Фил Карлтон-то сказал, “ Есть только два жестких вещей в области компьютерных наук: кэш недействительным и называя вещи .

” Эта статья о труднее из этих двух: кэш invalidation.Это направлено на читателей, которые уже работают с лаком кэша.Чтобы узнать больше об этом, вы найдете справочную информацию в “ ускорить ваш мобильный веб-сайт с Varnish 1 .”

10 микросекунд (или 250 миллисекунд) : Это разница между доставки работы кэш-памяти и доставки промах кэша.Как часто вы получаете последний будет зависеть от эффективности кэш-— это известно как промах кэша зависит от двух факторов: объем трафика и среднее время жизни (TTL), который является “Хит темпами».число, указывающее, сколько времени кэш позволило сохранить объект.Как системных администраторов и разработчиков, мы не можем сделать многое о трафике, но мы можем влиять на TTL .

Однако, чтобы иметь высокий TTL, мы должны быть в состоянии признать недействительными объектов из кэша, так что мы избежать службы черствый содержание.Лаком кэша, есть множество способов сделать это.Мы будем изучать наиболее общие пути и как их развертывания .

Лак делает кучу других вещей, а также, но его службы кэширования наиболее популярны. Кэш ускорить веб-служб, служа в кэше статический content.Когда лак Кэш доставки кэшу, как правило, просто сбрасывает кусок памяти в гнездо.Лак кэш так быстро, что, на современном оборудовании, мы на самом деле измерять время отклика в микросекундах

Superhero bunny
Caching isn’ т всегда так просто, как мы думаем,;несколько моментов, и проблемы могут занять довольно много нашего времени, чтобы овладеть.( Изображение credits 2 )

При использовании кэш, вы должны знать, когда выселить содержимое из кэша.Если у вас нет пути к выселить содержание, то вы бы рассчитывать на кэш, чтобы тайм-аут объекта по истечении заданного периода времени.Это один из методов, но вряд ли наиболее оптимальное решение.Лучше всего было бы, чтобы лак Cache сохранить объект в памяти навсегда (в основном), а затем рассказать объект при освежить.Давайте вдаваться в подробности о том, как достичь этой .

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

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 обычно не хранится в объекте, так ссылаясь на просьбы Единственное, что мы можем сделать здесь. Вы можете использова …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.