Статический кэш: что это такое и как он работает
Опубликовано: 2022-06-30Стратегии кэширования сложны, поэтому наш менеджер службы поддержки Райан Белисл потратил некоторое время, чтобы объяснить один из способов использования статического кэширования для ускорения работы сайта.
Продолжайте читать, чтобы узнать:
- Что такое кэш статического содержимого?
- Преимущества статического кэша.
- Ограничения статического кэширования.
- Как реализовать статическое кэширование.
- Как отключить статическое кэширование.
В электронной коммерции мало что может быть более жалким, чем платить за рекламную кампанию и смотреть, как она сверкает, только чтобы увидеть, как ваш сайт рухнет и сгорит в то, что должно быть вашим звездным часом. Иногда рекламные акции превосходят ваши ожидания, и ваших упреждающих мер недостаточно. Что тогда?
Одной из тактик, позволяющих повысить производительность вашего сайта в последнюю минуту, является метод, называемый статическим кэшированием.
Берегись! Мы не рекомендуем действовать в последнюю минуту, чтобы справиться с ожидаемыми всплесками веб-трафика. Это на тот случай, если вы уже применили лучшие методы оптимизации своей инфраструктуры или приложения, и ваши маркетинговые результаты превзошли все ожидания.
Что такое кешировать статическое содержимое?
Хотя доступны многие формы кэширования, статическое кэширование — это метод преобразования страницы, созданной по запросу пользователя, в документ HTML для обслуживания любых последующих запросов к той же странице.
Вместо того, чтобы сервер интерпретировал сам код сайта, запрашивал базу данных и возвращал HTML-документ обратно клиенту и, наконец, загружал страницу, статическое кэширование сохраняет один результат первых двух шагов и предоставляет этот документ всем, кто делает запрос. .
Преимущества статического кэширования
Хотя статическое кэширование является базовым, оно может иметь значительный эффект, особенно в следующих областях:
- Сокращение накладных расходов : вместо того, чтобы создавать процессы PHP для обработки запросов к страницам на сайте, веб-сервер будет просто обслуживать HTML-документ непосредственно в ответ на запрос на статически кэшированной странице.
- Предоставьте «целевую страницу» для всего кликового трафика : вместо того, чтобы тратить ресурсы на каждого, кто посещает вашу домашнюю страницу или переходит по ссылке с определенного URL-адреса, это предоставляет кэшированную страницу по умолчанию, не мешая нормальной работе других страниц на сайте. .
Ограничения статического кэширования
Однако я хочу отметить, что статическое кэширование имеет ограничения и обычно должно использоваться только как временное решение. Иметь ввиду:
- Статический кеш — это просто статический. Любые изменения, внесенные на сайт, не будут отражены на страницах, кэшированных таким образом.
- Такая информация, как «товары в корзине» или другие фрагменты данных, хранящиеся в файлах сеансов ваших клиентов, не будут работать на этих страницах.
Как реализовать статическое кэширование
Хотя существует несколько различных способов реализации статического кэширования, вот основные шаги, чтобы сделать это вручную:
1. Войдите на свой сервер с помощью SSH.
2. Создайте отдельный каталог в своем корневом каталоге для хранения HTML-документов, используемых в статическом кэше.
3. Используя cURL или Wget, делайте запросы к целевым страницам и сохраняйте их в каталоге под соответствующими именами URI (индекс, продукты и т. д.).
4. Добавьте перезаписи в начало файла .htaccess для перенаправления запросов к статическим файлам кеша, например:
[код]
RewriteCond %{REQUEST_URI} ^/?example_category$ [NC]
RewriteRule .* https://www.domain.tld/static/example_category.html [R=302,L]
[/код]
В качестве альтернативы вы также можете написать сценарий для обработки этого процесса. В приведенном ниже примере вы можете создать файл с отдельным URL-адресом в каждой строке. Затем эти URL-адреса будут прочитаны для создания вашего статического кеша:
[язык кода = "Баш"]
#!/бин/баш
# Базовая проверка аргумента
если [ "$#" -ne 2 ]; тогда
echo -e «Необходимо передать скрипту два аргумента.\n\nИспользование: ./nexcess_static_cache_helper.sh domain url_list_file\n»
выход 1
фи
# Получить некоторые данные о домене
домен=$1
страницы_файл = $ 2
# Создать каталог для статических страниц в текущем каталоге
cache_dir=./static_cache
если ! [[ -d $cache_dir ]]; тогда
mkdir $cache_dir
фи
# Загрузить статические страницы в файлы HTML
URL_list=$(кот $pages_file)
для URL в $URL_list; делать
request_uri=$(echo $URL | вырезать -d/ -f 4-)
если [[ -z "$request_uri" ]]; тогда
cache_page_name = «индекс»
request_uri="/"
еще
cache_page_name=$(echo $request_uri | perl -pe 's,/|\.,_,g')
фи
wget -q $URL -O $cache_dir/$cache_page_name.html
echo "$request_uri $cache_page_name" >> $HOME/temp_url.file
Выполнено
# Отформатировать блок для htaccess
эхо -е «########»
echo -e "# START: URL-адрес статического кэша перезаписывается, сгенерированный $(дата)"
эхо -е «########»
echo -e «RewriteEngine включен»
кошка $HOME/temp_url.file | при чтении страницы uri; делать
echo "RewriteCond %{REQUEST_URI} ^/?${uri}$ [NC]\n"
echo "RewriteRule .* https://www.${domain}/static_cache/$page [R=302,L]\n"
Выполнено
эхо -е «######»
echo -e «# END: URL-адрес статического кеша перезаписывается, сгенерированный $(дата)»
эхо -е «######»
rm $HOME/temp_url.file
[/код]

Чтобы использовать приведенный выше скрипт:
1. Перейдите в корневую папку вашего сайта, затем создайте файл с именем cache_list.txt или с любым другим именем.
2. Откройте файл. Добавьте URL-адрес для каждой страницы, которую необходимо статически кэшировать, используя новую строку для каждой записи URL-адреса. Это должно выглядеть следующим образом:
[код]
https://www.example.com/
https://www.example.com/sale
https://www.example.com/products
[/код]
Сохраните файл, затем создайте файл с приведенным выше скриптом и сохраните его как nexcess_static_cache_helper.sh или с любым другим именем, которое вы предпочитаете.
Сделайте исполняемый файл:
[код]chmod +x nexcess_static_cache_helper.sh[/код]
Когда будете готовы, запустите скрипт, но вместо него используйте собственное имя файла и фактическое доменное имя:
[код]./nexcess_static_cache_helper.sh example.com cache_list.txt[/код]
Это создаст каталог static_cache в вашем корневом каталоге, содержащий HTML-документы, которые будут использоваться для статического кеша. Кроме того, ваш терминал покажет вывод, похожий на:
[код]
########
# НАЧАЛО: URL-адрес статического кеша перезаписывается в понедельник, 18 сентября, 15:49:11 по восточному поясному времени 2017 г.
########
RewriteEngine включен
RewriteCond %{REQUEST_URI} ^/?/$ [NC]\n
RewriteRule .* https://www.example.com/static_cache/index [R=302,L]\n
RewriteCond %{REQUEST_URI} ^/?sale$ [NC]\n
RewriteRule .* https://www.example.com/static_cache/sale [R=302,L]\n
RewriteCond %{REQUEST_URI} ^/?products$ [NC]\n
RewriteRule .* https://www.example.com/static_cache/products [R=302,L]\n
######
# КОНЕЦ: Перезапись URL-адреса статического кеша сгенерирована в понедельник, 18 сентября, 15:49:11 по восточному поясному времени 2017 г.
######
[/код]
Скопируйте приведенный выше блок и вставьте его вверху вашего файла .htaccess для сайта, который обычно должен находиться в вашем текущем каталоге.
Теперь статический кеш должен быть включен. В духе ведения домашнего хозяйства удалите файлы, которые мы создали на предыдущих шагах:
[код]rm nexcess_static_cache_helper.sh cache_list.txt[/код]
Как отключить статическое кэширование
Чтобы отключить статическое кэширование, удалите блок кода, размещенный в файле .htaccess.
Кроме того, если вам нужно восстановить файлы, запустите скрипт еще раз, и он заменит HTML-документы более новыми версиями. Я бы порекомендовал также заменить блок кода .htaccess, просто чтобы обновить метку времени для дальнейшего использования.
Теперь ты знаешь
Как указывалось ранее, это лишь временный метод, и его не следует использовать в качестве основной стратегии оптимизации производительности. Для долгосрочных решений ознакомьтесь с нашим руководством по оптимизации, внедрите CDN или свяжитесь с нашей службой поддержки, чтобы изучить дополнительные варианты, такие как хостинг Magento, WooCommerce или WordPress.
Или ознакомьтесь с управляемыми пакетами WordPress от Nexcess, чтобы узнать, как можно оптимизировать производительность вашего сайта.