Управление кэш-памяти: используется лезвие стороны, включает в лаковые

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

В предыдущей статье для Smashing Magazine 1 Я объяснил, как можно ускорить ваш сайт, служа динамических страниц с обратного прокси-сервера, как лак.Если вы новичок в Varnish то, что статья место, чтобы начать как I’ буду дайвинг прямо в конфигурации деталей здесь .

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

Проблемы с Caching

Основная часть большинства веб-страниц контента, который не изменяется очень часто.Вообще, когда вы публикуете какой-то контент остается практически неизменным, и даже если она обновляется, принимая несколько минут до появления новой версии не может быть проблемой.Если это важно, чтобы кэш признан недействительным на публикацию, вы можете использовать кэш invalidation 2 очистить эту страницу из кэша.Тем не менее, там могут быть некоторые контент, который вы не хотите кэшировать вообще, такие как персонализированный контент.Там также может быть содержание, которое вы хотели бы кэша, но на более короткие периоды времени, возможно, пресс-виджета, который обновляет очень часто.Когда страницы содержат этот тип контента, который вы могли бы думать, что они uncachable.Именно здесь, однако, что край Side Включает (ESI) может сохранить день — и ваша эффективность сайта .

Что такое Край Side Включает

ESI 3 является спецификации языка для сборки фрагментов веб-страниц внутри других веб-страниц.Спецификация был представлен W3C в 2001 году, но остается “W3C Примечание” для целей обсуждения и не одобрены W3C или обновляется Рабочей группы .

ESI работает аналогичным образом к другим методам, включая фрагменты в ваших страницах, например, на стороне сервера Включает (SSI) или PHP включают в себя заявления, но он был разработан для обратных прокси, как лак, которые сидят перед веб-сервера исодержимого кэша .

Каким ESI Работа лаком

Лак реализовал подмножество функций ESI, три из имеющихся семи отчетности.Поддерживаемые заявления перечислены в Лак documentation 4 .Это означает, что мы можем использовать ESI на наших страницах и сказать лак для кэшированиявключают в себя в течение более короткого времени, чем основной документ, или даже не кэшировать включают вообще.Если вы уже запущен и работает с лаком, it’ ˘S очень просто начать работать с ESI и сделать огромную разницу в ваш хит тариф: количество страниц из кэша .

Example

Если вы хотите следовать вдоль и не имеют Лак установить играть, вы можете скачать мои бродячих пакет из GitHub 5 , который установит основного сервера лампу и лаком.Посмотрите на README на GitHub, чтобы увидеть, как настроить, что для вашей среды .

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

Screenshot of the initial layout 6
макет я работаю с в качестве примера.( Просмотр большой version 7 )

Сделать боковая панель Include

Первое, что нужно сделать, это произвести врезку PHP включают.Я спасу включают в inc/sidebar.php, а затем добавить PHP включают на главную страницу, чтобы включить его.Моя страница выглядит одинаково, но содержание боковой панели теперь разделены на включают .

В моей главной странице и в моем включают Ищу вывода текущей даты и времени.Это просто помогает мне видеть, работает ли кэш-память.Если бы я не делал не кэширование, каждый раз, когда я перезагрузите страницу Я ожидаю, что пора менять.Лаком в состояние по умолчанию оба раза должны быть одинаковы, и они будут обновлять только тогда, когда кэш очищается .

Screenshot with date and time 8
времена меняются на перезагрузки страницы и должны быть одинаковыми.( Просмотр большой version 9 )

Включить файл, используя ESI

Я теперь собираюсь использовать две метки ESI, которые поддерживаются лаком:

esi:include
esi:remove

esi:include тег используется для включенияподать через ESI.Так что я заменить мою PHP включают с этим:

<esi:include src="inc/sidebar.php"/>

Создать запасного варианта Когда ESI Are Not Available

Сразу после esi:include тег добавить esi:remove теги и внутри этих тегов оригинал PHP включают.Во время тестирования я также добавил строку “Не ESI!» Так что я могу увидеть, если включить добавляется в PHP или ESI .

<esi:include src="inc/sidebar.php"/>
<esi:remove>
  <?php include('inc/sidebar.php'); ?>
  <p>Not ESI!</p> 
</esi:remove>

Если вы сейчас загрузить страницу на сервер, работающий лак, который не имеет ESI настроен, вы должны увидеть текст “Не ESI!”.ESI не работает так оригинальный PHP включают будет загружен .

esi:remove теги позволяют создать запасной вариант для ситуаций, когда Край стороны, включает не доступны.Это может быть потому, что лак не был настроен, чтобы использовать их для этой страницы, или вы служите сайт непосредственно через Apache, как может быть случай, в развитии .

Где ESI имеются все <esi:remove></esi:remove> блок удаляется со страницы, когда включает в себя разбираются.Использование esi:remove заявление doesn’ т остановить код PHP от выполняется.Это все равно будет выполняться каждый раз, когда страница загружена, если ESI не доступен, и в соответствии с политикой кэширования, если это .

Альтернативная возможность использования esi:remove это использовать третий оператор, поддерживаемый лак, <!--esi … -->.Вы должны использовать это, если вы не хотите ничего произойти, когда ESI не доступен .

<!--esi <esi:include src="inc/sidebar.php"/>  - ... 

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

Comments are closed.