Разное

Кэширование страниц: Что такое кэширование и как управлять им в WordPress

08.08.2023

Кеширование страниц для оптимизации скорости загрузки | Центр Поддержки

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

Кэширование включается автоматически для большинства страниц, но в некоторых случаях может потребоваться включить его вручную (например, страницы, содержащие код Velo).

Содержание:

Как работает кэширование

Кеш — это временная область хранения, где хранятся версии ваших страниц, поэтому на их загрузку уходит меньше времени. Wix использует SSR (рендеринг на стороне сервера) для кэширования или «сохранения» страниц в сети доставки контента (CDN).

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

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

Множественные кешированные версии для разных посетителей

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

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

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

Кеширование и показатели производительности сайта

Кэшированные страницы могут помочь улучшить общую производительность сайта, включая такие показатели, как LCP (самая большая отрисовка контента) и FCP (первая отрисовка контента). Это может улучшить базовый рейтинг сайта и общий рейтинг результатов поиска.

Поскольку большая часть сайта уже загружена на серверы Wix, устройства ваших посетителей не должны выполнять такую большую обработку. Сайт также отображается с ближайшего к устройству географического CDN, что может способствовать более быстрой загрузке.

Включение и отключение кеширования на страницах

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

Чтобы включить или отключить кеширование:

  1. Перейдите на соответствующую страницу в редакторе:
    • Редактор Wix: нажмите Страницы и Меню в левой части редактора.  
    • Editor X: нажмите на Страницы в верхней части Editor X.
  2. Наведите курсор на страницу и нажмите значок Дополнительные действия .
  3. Нажмите Настроить.
  4. Нажмите Дополнительная настройка.
  5. Нажмите на переключатель Управлять кэшированием для этой страницы вручную:
    • Включено: выберите, как часто вы хотите сбрасывать кэш этой страницы. 
    • Отключено: страница будет кэширована автоматически.

Вопросы и ответы

Нажмите ниже, чтобы прочитать ответы на наши наиболее часто задаваемые вопросы о кэшировании страниц.

Есть ли страницы, которые нельзя кэшировать?

Если посетитель вошел на ваш сайт, любая страница, которую он открывает, не кэшируется, и эту опцию нельзя включить. 

Кеширование также нельзя включить для следующих страниц:

  • Страницы результатов поиска Wix
  • Страницы маршрутизатора
  • Страницы, которые вы сделали закрытыми

Как кеширование влияет на Velo?

По умолчанию кеширование отключено для любой страницы, содержащей код Velo. Если есть код Velo, который работает на всем сайте, кеширование отключено для всех страниц сайта. Однако вы можете вручную включить кеширование на страницах, содержащих код Velo. Подробнее о кэшировании с помощью Velo

Когда очищается кеш?

Кэш очищается каждую неделю (автоматически) или до каждого периода времени, который вы указали вручную. Он также очищается каждый раз, когда вы нажимаете Опубликовать в редакторе. 

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

Ускоряем работу сайта с помощью серверного кеширования

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

Что можно кешировать?

Кешировать можно целые страницы, фрагменты страниц, результаты выборок из базы данных и результаты сложных вычислений.

«Страничное кэширование» — самое высокопроизводительное решение, но не подходит для сайтов, на которых есть персонализированный контент или есть взаимодействие с пользователем. Всем пользователям (или большим группам пользователей, например, незарегистрированным на сайте), в случае использования закешированных страниц, выдаётся одно и тоже содержание. В случае, если группа пользователей может взаимодействовать с сайтом, например, добавлять товары в корзину, то кэшировать страницы целиком уже не получится.

«Фрагментарное кеширование» — наиболее распространённый тип кэширования — сохраняются отдельные блоки страниц, которые одинаковы для большой группы пользователей. Из интересных разновидностей — многоуровневое кеширование (по типу матрёшки), когда кешируются вложенные друг в друга фрагменты, например, страница каталога товаров и карточки каждого отдельного товара.

«Кэширование результатов запросов к БД» и «Кэширование результатов вычислений» — кеширование данных, получаемых в результате сложных вычислений или выборок из БД, может очень серьёзно ускорить приложение. В частности, это активно используется задач по обработке графики и для формирования аналитических отчётов — сложные вычисления часто занимают достаточно продолжительное время и требуют большого количества ресурсов, поэтому проще производить обработку данных заранее в фоновом режиме и хранить до момента, пока они не потребуются.

Преимущества кеширования

  1. Снижение нагрузки на базу данных — единожды найденные результаты могут быть многократно использованы.
  2. Снижение нагрузки на сервер приложения — однажды созданная страница может потом много раз отдаваться пользователям.
  3. Повышение скорости обработки запросов пользователей — если для обработки запроса не требуется обращения к базе данных, вычислений и формирования страницы, а надо только забрать из хранилища кеша результат и отдать его пользователю, то ответ на такой запрос будет дан практически мгновенно.

Если резюмировать, то кеширование позволяет увеличить производительность и устойчивость к нагрузкам.

Как кешировать?

Кешировать можно разными способами, например, писать данные непосредственно на диск или в оперативную память (например, используя Memcached или Redis). Выбор способа зависит от того, какие именно данные кешируются, насколько интенсивно используется кеш и где находится «слабое звено» в производительности.

быстродействиебэкендвеб-разработка

Статья опубликована в 2014 году

Кэширование страниц | Руководство разработчика Adobe Commerce

Кэширование — один из самых эффективных способов повысить производительность сайта. Вообще говоря, существует два метода кэширования контента:

  • На стороне клиента (браузер)
  • На стороне сервера

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

Библиотека кэширования страниц Magento содержит простой обратный прокси-сервер PHP, который обеспечивает полное кэширование страниц из коробки. Обратный прокси выступает в роли посредника между посетителями и вашим приложением и может снизить нагрузку на ваш сервер.

Мы рекомендуем использовать Varnish, но вместо этого вы можете использовать механизм кэширования Magento по умолчанию, который хранит файлы кэша в любом из следующих:

  • Файловая система (вам не нужно ничего делать, чтобы использовать кэширование на основе файлов.)
  • База данных
  • Редис

Кэшируемые и некэшируемые страницы

Кэшируемые и некэшируемые — термины, которые мы используем, чтобы указать, следует ли вообще кэшировать страницу. (По умолчанию все страницы кэшируются.) Если какой-либо блок в макете обозначен как некэшируемый, вся страница некэшируемая.

Чтобы создать некэшируемую страницу, пометьте любой блок на этой странице как некэшируемый в макете, используя cacheable="false" .

 
 1
2
3
 
 
    

 

Примеры некэшируемых страниц включают сравнение продуктов, корзину, страницы оформления заказа и т. д.

Пример

Не настраивайте страницы содержимого (т. е. страницы каталога, продукта и CMS) как некэшируемые. Это отрицательно сказывается на производительности.

Общедоступный и частный контент

Обратные прокси-серверы предоставляют «общедоступный» или общий контент более чем одному пользователю. Однако большинство веб-сайтов Magento генерируют динамический и персонализированный «частный» контент, который должен предоставляться только одному пользователю, что создает уникальные проблемы с кэшированием. Чтобы решить эти проблемы, Magento может различать два типа контента:

  • Общедоступный — общедоступный контент хранится на стороне сервера в хранилище кэша обратного прокси-сервера (например, в файловой системе, базе данных, Redis или Varnish) и доступен нескольким клиентам.

    Примеры общедоступного контента включают верхний и нижний колонтитулы и список категорий.

  • Частный — Частный контент хранится на стороне клиента (например, в браузере) и предназначен для отдельного клиента. Примеры личного контента включают список пожеланий, корзину, имя клиента и адрес. Вы должны ограничить сохраненный частный контент небольшой частью общего контента страницы.

Кэшируются только запросы HTTP GET и HEAD. Дополнительные сведения о кэшировании см. в RFC-2616, раздел 13.

Кэширование веб-сайтов с помощью Redis | Redis|Кэширование веб-сайтов с помощью Redis

При динамическом создании веб-страниц обычно используется язык шаблонов для упрощения создания страниц. Прошли те времена, когда каждая страница была написана от руки. Современные веб-страницы создаются из шаблонов страниц с верхними и нижними колонтитулами, боковыми меню, панелями инструментов, областями содержимого и, возможно, даже сгенерированным JavaScript.

Несмотря на способность динамически генерировать контент, большинство страниц, которые обслуживаются на веб-сайте Fake Web Retailer, не изменяются на регулярной основе. Конечно, в каталог добавляются какие-то новинки, удаляются старые, иногда появляются специальные предложения, а иногда даже страницы «горячих товаров». Но на самом деле только несколько настроек учетной записи, прошлых заказов, корзины/оформления заказа и подобных страниц содержат контент, который необходимо генерировать при каждой загрузке страницы.

Изучив количество просмотров, Fake Web Retailer определил, что 95% обслуживаемых ими веб-страниц изменяются не чаще одного раза в день и на самом деле не требуют динамического создания контента. Наша работа — перестать генерировать 95% страниц при каждой загрузке. Сокращая количество времени, которое мы тратим на создание статического контента, мы можем уменьшить количество серверов, необходимых для обработки той же нагрузки, и мы можем быстрее обслуживать наш сайт.

(Исследования показали, что сокращение времени, которое пользователи тратят на ожидание загрузки страниц, увеличивает их желание использовать сайт и повышает их оценку сайта.)

Все стандартные среды приложений Python предлагают возможность добавления слоев, которые могут выполнять предварительную или последующую обработку запросов по мере их обработки. Эти слои обычно называются промежуточным ПО или надстройками

. Давайте создадим один из этих слоев, который вызывает нашу функцию кэширования Redis. Если веб-запрос не может быть кэширован, мы сгенерируем страницу и вернем контент. Если запрос может быть закэширован, мы попытаемся получить и вернуть страницу из кеша; в противном случае мы сгенерируем страницу, кэшируем результат в Redis на срок до 5 минут и возвращаем контент. Наш простой метод кэширования можно увидеть в следующем листинге.

Листинг 2.6. Функция cache_request()
 def cache_request(conn, request, callback):
 
 если не can_cache(подключение, запрос):
обратный вызов (запрос)
 

Если мы не можем кэшировать запрос, немедленно вызываем обратный вызов.

 page_key = 'кэш:' + hash_request (запрос)
 

Преобразование запроса в простой строковый ключ для последующего поиска.

 контент = conn.get(page_key)
 

Извлечь кэшированный контент, если сможем, и он доступен.

если не содержание:
 
 контент = обратный вызов (запрос)
 

Генерировать контент, если мы не можем кэшировать страницу или она не была кэширована.

 conn.setex (ключ_страницы, содержимое, 300)
 

Кэшировать вновь сгенерированный контент, если мы можем его кешировать.

 возвращаемое содержимое
 

Вернуть содержимое.

Для тех 95% контента, которые могли кэшироваться и загружаться часто, этот фрагмент кода устраняет необходимость динамической генерации просмотренных страниц в течение 5 минут. В зависимости от сложности контента, это одно изменение может уменьшить задержку для страницы с большим объемом данных с 20–50 мс до одного обращения к Redis (менее 1 мс для локального подключения, менее 5 мс для компьютеров, расположенных близко друг к другу в Тот же дата-центр).

Добавить комментарий

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