Скачать приложение
Всё Разработка сайтов Нейросети Без рубрики SEO продвижение Digital Маркетинг Контекстная реклама Соцсети Дизайн Поисковое продвижение Бизнес Объявления и профиль Авито Маркетинговое продвижение Контекстная реклама и Директ Продвижение товаров Ozon Сообщества и материалы ВК Бренд и экспертная репутация Карты и локальные организации ИИ и заметность в ответах Региональное продвижение Сайты и посадочные страницы Мобильные приложения Продвижение в социальных сетях Бизнес и продукт Продвижение профессиональных услуг Статьи и редакционный контент Видео и YouTube Музыка и работа артиста Delo — Delo: как различать значения запроса Delo — СЭД «Дело»: задачи и границы системы Delo — ДЕЛО-Web: как проверить рабочий адрес Delo — ДЕЛО-Web: вход и проверка доступа Delo — СЭД «Дело»: проверка карточки документа Delo — СЭД «Дело»: как организовать поиск Delo — СЭД «Дело»: файлы и версии документа Delo — СЭД «Дело»: согласование и маршрут Delo — СЭД «Дело»: поручения и результат Delo — СЭД «Дело»: отчёты и сравнение данных Delo — СЭД «Дело»: подготовка обращения Delo — СЭД «Дело»: роли и доступ к объектам Delo — Delo-Press: как найти нужное издание Delo — Delo-Press: работа с архивом статей Delo — Delo-Press: проверка условий подписки Delo — Delo-Press: как проверять образец документа Delo — Delo Design: как выбрать мебель Delo — Стулья Delo: сравнение под задачу Delo — Стул ЙО Delo: проверка исполнения Delo — Столы Delo: габариты и комплектность Delo — Delo СУПЕРКВАДРАТ: как проверить параметры Delo — Диваны Delo: выбор конфигурации Delo — Кресла Delo: посадка и размещение Delo — Delo мебель: как проверить заказ и доставку Delo — Delo Design: замеры перед выбором мебели Delo — Delo Chevron и Texaco: чтение обозначений Delo — Delo Grease EP 2: проверка характеристик Delo — Delo Grease: сравнение NLGI 1 и 2 Delo — Delo Starplex EP 2: проверка точного продукта Delo — Delo 400 RDS 10W-40: как сверять требования Lid — Lid: перевод и выбор значения Lid — Lid: произношение и чтение Lid — Cup lid: перевод в контексте посуды Lid — Trunk lid и boot lid: перевод автомобильных фраз Lid — Remove lid: как переводить указание Lid — No lid и microwave no lid: чтение маркировки Lid — Keep a lid on something: смысл выражения Lid — Half-lidded eyes: перевод описания взгляда Lid — SNR UPS LID: как различать модели Lid — SNR-UPS-LID-600-XPS: проверка комплекта Lid — SNR-UPS-LID-600-LED: чтение характеристик Lid — SNR-UPS-LID-1000-XPS: критерии выбора Lid — SNR UPS LID 1200: модель и исполнение Lid — SNR UPS LID 1500: сравнение исполнений Lid — SNR UPS LID 2000: проверка задачи резервирования Lid — Lid Open Power On: включение при открытии Lid — Wake on Lid Open: пробуждение и контекст Lid — Lid Open Resume: как понимать настройку Lid — Wake on USB While Lid Closed: что проверять Lid — Крышка ноутбука: BIOS и параметры питания Lid — Knock on the Coffin Lid: что важно перед началом Lid — Knock on the Coffin Lid: порядок первых попыток Lid — Knock on the Coffin Lid: логика выбора карт Lid — Knock on the Coffin Lid: предметы и экипировка Lid — Knock on the Coffin Lid: выбор и прохождение Lid — Knock on the Coffin Lid: как разбирать сложный бой Lid — Knock on the Coffin Lid: проверка перед запуском Lid — Похожие на Knock on the Coffin Lid игры: критерии Lid — Stars of the Lid: как проверять альбом и издание Lid — A Song for Stars of the Lid: как не перепутать трек Дело — Картотека арбитражных дел: поиск записи Дело — Арбитражное дело по номеру: проверка реквизитов Дело — Арбитражные дела участника: проверка совпадений Дело — Как найти судебное дело: выбор источника Дело — Поиск дела по фамилии: как проверять результат Дело — Номер дела: где искать и что сверять Дело — Расписание дел: проверка даты и суда Дело — Движение и статус дела: чтение событий Дело — Решение по делу: поиск и реквизиты Дело — Постановление и определение по делу: проверка акта Дело — Гражданское дело: проверка открытой информации Дело — Уголовное дело: границы публичного поиска Дело — Административное дело: как уточнить вид и запись Дело — Дела Верховного Суда: поиск акта и реквизитов Дело — Реестр наследственных дел: проверка поиска Дело — Наследственное дело: как подготовить уточнение Дело — Материалы дела: публичный поиск и ознакомление Дело — Дело о банкротстве: проверка карточки и документов Дело — Номенклатура дел: проверка структуры Дело — Опись дела: связь записи и состава Дело — Внутренняя опись дела: проверка документов Дело — Обложка дела: как сверять реквизиты Дело — Передача дел в архив: подготовка сверки Дело — Личное дело: состав и учёт документов Дело — Дело в архиве: поиск по описанию Дело — Сроки хранения дел: проверка основания Дело — Слово «дело»: значение в контексте Дело — Как ответить на «как дела»: выбор формулировки Дело — «Делу время, потехе час»: смысл и употребление Дело — Синонимы к слову «дело»: как выбрать замену Лиды — Лид в продажах: понятное определение Лиды — Качество лидов: как определить критерии Лиды — Квалификация лидов: вопросы и результат Лиды — MQL-лид: критерии готовности для маркетинга Лиды — SQL-лид: передача от маркетинга в продажи Лиды — Холодные, тёплые и горячие лиды: различия Лиды — Источники лидов: учёт и сравнение каналов Лиды — Стоимость лида CPL: расчёт и сравнение Лиды — Конверсия в лид: событие и знаменатель Лиды — Конверсия лидов в продажи: проверка выборки Лиды — Генерация лидов: как поставить проверяемую задачу Лиды — Лид-магнит: польза и связь с запросом Лиды — Как сделать лид-магнит: план проверки Лиды — Лид-форма: задача, поля и результат Лиды — Конструктор лид-форм: что проверить перед запуском Лиды — Обработка лидов: понятный порядок действий Лиды — Скорость обработки лида: как измерять время Лиды — Распределение лидов: правила и контроль передачи Лиды — Повторный лид: новое обращение и история Лиды — Объединение лидов: как проверить совпадение Лиды — Покупка лидов: как сравнить условия поставки Лиды — Оплата за лиды: единица и итоговая стоимость Лиды — Таблица лидов: поля и рабочий смысл Лиды — Лиды в B2B: компания, контакт и обращение Лиды — Тимлид: как определить роль в команде Лиды — Технический лид: решения и границы ответственности Лиды — Должность лид: как читать описание роли Лиды — Контент-лид: задачи и редакционный процесс Лиды — Лид-абзац в журналистике: роль и смысл Лиды — Как писать лид: выбор главного и редактура Мессенджеры Бюджет и состав продвижения Подрядчики и управление работой Каналы и боты Telegram Продвижение Wildberries Библиотеки и продвижение чтения Менеджмент PR и работа с редакциями Интернет магазин Статьи и канал Дзен Новинки Психология Экономика Продвижение сайта в Яндексе Продвижение сайта в Google Канал в MAX Продвижение ресторана Продвижение туристского предложения Книги и читательское ожидание
SEO продвижение

Кэширование сайта — что это такое

admin
28 августа 2025 · 4 минут · 75

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

Что такое кэширование

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

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

Применяется на всех уровнях компьютерных систем: кэш процессора (L1/L2/L3) хранит часто используемые инструкции и данные ближе к ядру, оперативная память кэширует данные с жёсткого диска, SSD кэширует данные с HDD в гибридных системах, браузер кэширует ресурсы сайтов, CDN кэширует статические файлы ближе к пользователю, серверное ПО кэширует результаты запросов к базе данных и готовые HTML-страницы.

Кэширование данных — что это такое

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

Пример: интернет-магазин выводит список товаров категории. Без кэширования — при каждом запросе страницы выполняется SQL-запрос к базе данных, база возвращает список товаров, PHP собирает HTML. С кэшированием — первый запрос выполняется стандартно, готовый HTML или результат SQL-запроса сохраняется в кэш (Redis, Memcached, файл). Следующие 1000 запросов получают данные из кэша за миллисекунды без обращения к базе.

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

Виды кэширования

 

  • Браузерное кэширование. Браузер сохраняет статические ресурсы — CSS, JavaScript, изображения, шрифты — на устройстве пользователя. При повторном посещении сайта ресурсы загружаются с диска устройства а не с сервера. Управляется HTTP-заголовками: Cache-Control задаёт политику кэширования, Expires задаёт дату истечения, ETag и Last-Modified позволяют браузеру проверить актуальность кэшированного ресурса.
  • Серверное кэширование страниц. Готовые HTML-страницы сохраняются на сервере. При запросе сервер отдаёт сохранённый файл минуя PHP, базу данных и весь стек приложения. Самый эффективный вид кэширования для CMS — снижает время ответа с сотен миллисекунд до единиц миллисекунд.
  • Кэширование объектов (Object Cache). Результаты запросов к базе данных сохраняются в памяти — Redis или Memcached. Следующий запрос получает данные из памяти не обращаясь к базе. Используется совместно с серверным кэшированием страниц — ускоряет динамические части сайта которые не могут быть полностью закэшированы на уровне страниц.
  • CDN-кэширование. Content Delivery Network — сеть серверов распределённых географически. Статические ресурсы и иногда целые страницы кэшируются на узлах CDN ближайших к пользователю. Пользователь из Владивостока получает ресурсы с CDN-узла в Азии а не с сервера в Москве — задержка снижается.
  • Кэширование операционной системы. ОС кэширует данные с диска в оперативной памяти (page cache). Файлы к которым часто обращаются хранятся в RAM — чтение происходит в разы быстрее чем с диска.
  • Кэш процессора. L1, L2, L3 кэш — сверхбыстрая память внутри процессора хранящая часто используемые инструкции и данные. Доступ к L1 кэшу — около 1 нс, к оперативной памяти — 60–100 нс, к SSD — тысячи нс. Управляется аппаратно без участия программиста или системного администратора.
Вид кэширования Где хранится Что кэшируется Управление
Браузерный кэш Устройство пользователя CSS, JS, изображения HTTP-заголовки
Серверный кэш страниц Сервер (файлы/RAM) Готовые HTML-страницы Плагины, конфиг сервера
Object Cache RAM (Redis/Memcached) Результаты запросов к БД Код приложения
CDN Серверы CDN Статические файлы, страницы Настройки CDN
Кэш ОС Оперативная память Файлы с диска Автоматически
Кэш процессора Процессор Инструкции и данные Аппаратно

Как настроить кэширование через файл .htaccess

htaccess

Файл .htaccess — конфигурационный файл веб-сервера Apache. Позволяет управлять поведением сервера на уровне директории без доступа к глобальной конфигурации. Через .htaccess настраивают браузерное кэширование статических ресурсов — указывают серверу какие заголовки отправлять браузеру.

Файл .htaccess находится в корневой директории сайта. Если файла нет — создайте его через FTP или файловый менеджер хостинга.

Настройка кэширования через mod_expires

Модуль mod_expires управляет заголовком Expires — датой истечения кэша. Браузер не будет перезапрашивать ресурс до этой даты.

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"

    # Изображения
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"

    # CSS и JavaScript
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"

    # Шрифты
    ExpiresByType font/woff2 "access plus 1 year"
    ExpiresByType font/woff "access plus 1 year"
    ExpiresByType application/font-woff "access plus 1 year"

    # HTML и данные
    ExpiresByType text/html "access plus 0 seconds"
    ExpiresByType application/json "access plus 0 seconds"
</IfModule>

Логика значений TTL: изображения и шрифты меняются редко — 1 год. CSS и JavaScript — 1 месяц (обновляются при изменениях дизайна). HTML-страницы — 0 секунд (содержимое может измениться в любой момент).

Настройка кэширования через mod_headers

Модуль mod_headers позволяет управлять заголовком Cache-Control — более гибким современным механизмом кэширования.

<IfModule mod_headers.c>
    # Изображения и шрифты — кэш на 1 год
    <FilesMatch "\.(ico|jpg|jpeg|png|gif|webp|svg|woff|woff2|ttf|eot)$">
        Header set Cache-Control "max-age=31536000, public, immutable"
    </FilesMatch>

    # CSS и JavaScript — кэш на 1 месяц
    <FilesMatch "\.(css|js)$">
        Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>

    # HTML — не кэшировать
    <FilesMatch "\.(html|htm|php)$">
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires 0
    </FilesMatch>
</IfModule>

Директива immutable сообщает браузеру что файл никогда не изменится — браузер не будет проверять его актуальность даже при принудительном обновлении страницы. Используется только для файлов с версионированием в имени (style.v2.css, app.1a2b3c.js).

Включить сжатие gzip через .htaccess

Сжатие gzip снижает объём передаваемых данных — текстовые ресурсы (HTML, CSS, JS) сжимаются в 2–10 раз. Настраивается в .htaccess через mod_deflate:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE application/xml
</IfModule>

Изображения (JPEG, PNG, WebP) сжимать через gzip не нужно — они уже используют собственное сжатие, повторное сжатие не даёт эффекта и создаёт лишнюю нагрузку на сервер.

Полный блок кэширования для .htaccess

Готовый блок объединяющий браузерное кэширование и сжатие — вставляется в начало файла .htaccess:

# Сжатие gzip
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
    AddOutputFilterByType DEFLATE text/plain application/json image/svg+xml
</IfModule>

# Браузерное кэширование
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresByType font/woff2 "access plus 1 year"
    ExpiresByType font/woff "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType text/html "access plus 0 seconds"
</IfModule>

После сохранения изменений в .htaccess проверьте работу кэширования через PageSpeed Insights или Chrome DevTools → вкладка Network → колонка Cache-Control в заголовках ответа.

Кэширование WordPress — плагины и настройка

cache-plaguins

WordPress генерирует страницы динамически: при каждом запросе PHP обращается к базе данных, собирает контент, применяет шаблоны и отдаёт готовый HTML. Без кэширования каждый посетитель инициирует этот цикл заново. Плагин кэширования сохраняет готовый HTML и отдаёт его напрямую минуя PHP и базу данных.

WP Super Cache

WP Super Cache — плагин кэширования от Automattic, разработчиков WordPress. Более 2 миллионов активных установок. Генерирует статические HTML-файлы страниц на диске сервера. Три режима работы: простой (через PHP, совместимость максимальная), расширенный (через mod_rewrite в .htaccess, скорость максимальная), WP-Cache (через PHP с поддержкой cookies).

Для максимальной скорости используют расширенный режим — Apache отдаёт статический HTML файл напрямую не запуская PHP. Настройка: Параметры → WP Super Cache → вкладка «Просто» → выбрать «Кэширование включено» → сохранить → вкладка «Дополнительно» → выбрать «Использовать mod_rewrite для обслуживания файлов кэша».

W3 Total Cache

W3 Total Cache — наиболее функциональный бесплатный плагин кэширования для WordPress. Охватывает все уровни кэширования: страницы, объекты базы данных, фрагменты, браузерный кэш, интеграция с CDN. Поддерживает Redis и Memcached как хранилища для object cache.

Настройка значительно сложнее чем у WP Super Cache — требует понимания принципов работы кэша. Для стандартного сайта достаточно включить: Page Cache (режим Disk: Enhanced), Browser Cache (включить все опции сжатия и заголовков), Minify (объединение и минификация CSS и JS).

LiteSpeed Cache

LiteSpeed Cache работает в полную силу только на хостингах с веб-сервером LiteSpeed — многие shared-хостинги (Reg.ru, Beget, TimeWeb) поддерживают LiteSpeed. На Apache функциональность ограничена.

При совместимом сервере LiteSpeed Cache даёт наилучшие результаты среди бесплатных решений: серверное кэширование на уровне веб-сервера (быстрее чем PHP-кэш), автоматическая оптимизация изображений и конвертация в WebP, отложенная загрузка изображений, Critical CSS, минификация. Настройка через интуитивный интерфейс с пресетами.

WP Rocket

WP Rocket — платный плагин кэширования ($59/год для одного сайта). Де-факто стандарт для производительных WordPress-сайтов. Включает: кэширование страниц, сжатие и объединение CSS/JS, отложенную загрузку изображений, предзагрузку кэша, удаление неиспользуемого CSS, интеграцию с CDN и object cache. Настройка через простой интерфейс без технических знаний.

Плагин Стоимость Сложность настройки Object Cache
WP Super Cache Бесплатно Низкая Нет
W3 Total Cache Бесплатно Высокая Redis, Memcached
LiteSpeed Cache Бесплатно Средняя Redis
WP Rocket $59/год Низкая Через расширение

Как отключить кэширование WordPress

Отключение кэша нужно при разработке и отладке — чтобы изменения отображались немедленно без очистки кэша.

Через плагин: найдите кнопку «Очистить кэш» или «Purge Cache» в административной панели — она появляется в верхней панели WordPress после установки плагина кэширования. Большинство плагинов добавляют кнопку полной очистки кэша.

Полное отключение кэширования: деактивируйте плагин кэширования через Плагины → Активные плагины → Деактивировать. Для WP Super Cache дополнительно проверьте что из .htaccess удалены правила кэширования (плагин удаляет их автоматически при деактивации).

На хостинге Reg.ru: кэширование может быть включено на уровне хостинга независимо от плагинов WordPress. Для отключения: панель управления хостингом → раздел «Сайты» → настройки сайта → отключить кэширование. Актуально при отладке — включайте обратно после завершения работ.

PHP-кэширование

PHP-кэширование работает на нескольких уровнях: кэш байт-кода (OPcache), кэш пользовательских данных (APCu, Redis, Memcached).

OPcache — кэш байт-кода PHP

PHP-скрипты компилируются в байт-код при каждом выполнении. OPcache сохраняет скомпилированный байт-код в памяти — при следующем запросе PHP не компилирует файл заново. Ускорение — от 2 до 10 раз в зависимости от приложения.

OPcache входит в стандартную поставку PHP начиная с версии 5.5. Включается в php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.save_comments=1

Большинство хостингов включают OPcache по умолчанию. Проверить: phpinfo() → найти раздел «opcache» → статус «enabled».

Кэширование данных в PHP через Redis

Redis — хранилище данных в памяти используемое для кэширования результатов запросов к базе данных, результатов API-вызовов, сессий. Работает как key-value хранилище с поддержкой TTL.

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$cacheKey = 'products_category_' . $categoryId;
$cached = $redis->get($cacheKey);

if ($cached) {
    $products = json_decode($cached, true);
} else {
    $products = $db->query("SELECT * FROM products WHERE category_id = ?", $categoryId);
    $redis->setex($cacheKey, 3600, json_encode($products)); // TTL 1 час
}

Кэширование страниц в PHP

Простое файловое кэширование HTML-страниц без фреймворка:

$cacheFile = 'cache/' . md5($_SERVER['REQUEST_URI']) . '.html';
$cacheTime = 3600; // 1 час

if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) {
    echo file_get_contents($cacheFile);
    exit;
}

ob_start();
// ... генерация страницы ...
$content = ob_get_clean();
file_put_contents($cacheFile, $content);
echo $content;

Кэширование в других технологиях

Кэширование в Laravel. Laravel имеет встроенный unified cache API поддерживающий драйверы file, database, Redis, Memcached, DynamoDB. Настройка драйвера в config/cache.php. Использование:

// Получить из кэша или выполнить запрос и сохранить
$products = Cache::remember('products', 3600, function () {
    return Product::all();
});

// Очистить кэш
Cache::forget('products');

Кэширование в Django. Django поддерживает файловый кэш, кэш в памяти (LocMemCache), Memcached, Redis (через django-redis). Настройка в settings.py:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient"},
        "TIMEOUT": 3600,
    }
}

Кэширование MySQL. Query Cache в MySQL кэшировал результаты SELECT-запросов. Начиная с MySQL 8.0 Query Cache удалён из-за низкой эффективности при высокой конкурентности. Современный подход — кэширование на уровне приложения через Redis или Memcached. InnoDB Buffer Pool кэширует данные и индексы таблиц в памяти — его размер (innodb_buffer_pool_size) настраивают под объём рабочего набора данных, обычно 70–80% доступной RAM.

Кэширование SSD. В контексте хранения данных SSD используется как кэш для HDD в гибридных системах (Intel Optane, технология кэширования в NAS-устройствах). Горячие данные хранятся на быстром SSD, холодные — на ёмком HDD. Операционные системы и системы хранения управляют этим автоматически без участия пользователя.

0

Комментарии скоро откроются. А пока — пишите нам в Telegram-канал.