Здравствуйте.
Обновил сайт, но браузер показывает прошлый контент, так как он его закэширован. Точнее текст меняется, но стили не меняются (возможно потому-что они находятся в файле .css).
У себя то я удалю кэш, но хотел бы понять как сделать чтобы и у других пользователей обновился мой сайт, а не брался из кэша.
Пробовал такие варианты вставлять в код (но они не работают почему-то):
вариант 1:
|
1 |
<meta http-equiv="Cache-Control" content="no-cache"> |
вариант 2:
|
1 |
<meta http-equiv="Cache-Control" content="max-age=3600, must-revalidate"> |
вариант 3:
|
1 |
<meta name="expires" content="Sun, 06 Dec 2020 18:40:04 GMT"> |
Подскажите пожалуйста как управлять кэшированием сайта? Чтобы у других пользователей показывался правильный последний контент.
Вообще у меня index.php но пробовал изменить и на index.html. Тоже не помогло...
В это место страницы index вставлял варианты:
Дополнительно:
Содержание
Nginx?
|
1 |
<?php header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); |
Сайт делаю на конструкторе web Builder. Хостинг: Mакхост.
|
1 |
<link href="css/index.css?<?= rand(1000, 10000); ?>" rel="stylesheet"> |
|
1 |
<link href="css/index.css?<?= time(); ?>" rel="stylesheet"> |
Сплю уже)
|
1 |
<link href="css/index.css?<?= time(); ?>" rel="stylesheet"> |
- Filemtime вместо time позволил бы и кешировать в браузере и вовремя обновлять
Ответы:
делал так:
все css/js ресурсы внедряются в хтмл посредством хэлпера:
<?= $this->getCss('local', 'backend.css') ?>
а отдаются через контроллер:
|
1 |
class Css extends Controller { public function run() { $paths = [ Application::getAnchor($this->getRequest()->getRequest('module'))::getPath(), 'resources', 'css', $this->getRequest()->getRequest('file') ]; $path = implode(DIRECTORY_SEPARATOR, $paths); try { $resource = new ResourceCss($path); $resource->checkMieType(); $this->getResponse() ->unsetHeader(Response::HEADER_LAST_MODIFIED) ->unsetHeader(Response::HEADER_EXPIRES) ->unsetHeader(Response::HEADER_CACHE_CONTROL) ->unsetHeader(Response::HEADER_PRAGMA); if (!Request::IfModifiedSince($resource->getModificationTime())) { return $this->getResponse()->setHttpStatusCode(304); } $this->getResponse() ->setHeader(Response::HEADER_CONTENT_TYPE, 'text/css; charset=utf-8') ->setHeader(Response::HEADER_LAST_MODIFIED, $resource->getModificationTime()->formatHttpDate()) ->setHeader(Response::HEADER_CACHE_CONTROL, 'no-cache, must-revalidate'); return $resource; } catch (Exception $e) { throw $e; } } } |
суть в том, что контроллер проверяет last modified since запрошенного css
если не изменился - отдает 304, если изменился - читаем файл, посылает новый Last-Modified и отдает его.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?


Для настройки кэширования сайта существует несколько способов, которые можно применить в зависимости от используемой технологии и сервера.
1. Кэширование на стороне сервера:
- Если вы используете сервер Apache, вы можете настроить кэширование с помощью модуля mod_expires. Для этого необходимо добавить следующий код в файл .htaccess:
- Для сервера Nginx можно добавить следующий код в конфигурационный файл:
2. Кэширование на стороне клиента:
- Для управления кэшированием на стороне клиента можно использовать заголовки Cache-Control и Expires. Например, для кэширования ресурсов на 1 месяц можно добавить следующий заголовок в ответ сервера:
3. Использование CDN:
- Перенаправление статических ресурсов на CDN (Content Delivery Network) также может помочь ускорить загрузку сайта за счет распределения контента по различным серверам по всему миру.
4. Использование кэширования в CMS:
- Если ваш сайт работает на платформе CMS (например, WordPress), вы можете установить плагины для кэширования, такие как WP Super Cache или W3 Total Cache, которые помогут оптимизировать процесс кэширования.
5. Минификация и сжатие файлов:
- Для ускорения загрузки сайта также важно минифицировать и сжимать CSS, JavaScript и изображения. Это можно сделать с помощью специальных инструментов или плагинов.
Учитывая все эти методы, вы сможете значительно улучшить производительность и скорость загрузки вашего сайта за счет настройки кэширования.
Настройка кэширования на сайте является важным шагом для улучшения производительности и скорости загрузки страниц. Кэширование позволяет временно хранить ранее загруженные данные на стороне клиента или сервера, чтобы уменьшить количество запросов к серверу и ускорить загрузку страниц.
Существует несколько способов настройки кэширования на сайте, и выбор оптимального зависит от конкретных потребностей и требований проекта. В данном ответе мы рассмотрим основные методы настройки кэширования на сайте:
1. Кэширование на стороне сервера:
- HTTP-заголовки: Один из наиболее распространенных способов настройки кэширования на сайте - это использование HTTP-заголовков. Например, заголовок Cache-Control позволяет указать, как долго браузер или прокси-сервер должны кэшировать ресурс. Другие полезные заголовки включают ETag, Last-Modified и Expires.
- CDN: Использование Content Delivery Network (CDN) позволяет распределить статические ресурсы по всему миру и ускорить их доставку до конечного пользователя. Многие CDN-провайдеры также предлагают возможности кэширования контента на своих серверах.
- Кэширование на уровне приложения: Некоторые веб-серверы и платформы предоставляют встроенные средства кэширования на уровне приложения, позволяющие сохранять результаты выполнения запросов и повторно использовать их без повторного выполнения.
2. Кэширование на стороне клиента:
- Локальное хранилище: Использование Local Storage или Session Storage позволяет хранить данные на стороне клиента и использовать их в дальнейшем без необходимости повторного запроса к серверу.
- Кэширование ресурсов: Загрузка статических ресурсов, таких как изображения, стили и скрипты, в кэш браузера позволяет ускорить загрузку страницы при последующих запросах.
3. Инструменты для управления кэшированием:
- Языковые библиотеки: Многие языки программирования предоставляют библиотеки и инструменты для управления кэшированием, такие как Redis, Memcached, Varnish и другие.
- Плагины и расширения: Для популярных CMS и фреймворков существуют плагины и расширения, позволяющие настроить кэширование на сайте без необходимости писать сложный код.
4. Проверка эффективности кэширования:
- Инструменты анализа производительности: Использование инструментов, таких как Google PageSpeed Insights, GTmetrix или WebPageTest, позволяет оценить эффективность кэширования на сайте и выявить возможные улучшения.
В целом, настройка кэширования на сайте требует комплексного подхода и анализа специфики проекта. Необходимо учитывать типы данных, частоту обновлений, потребности пользователей и другие факторы для достижения оптимальной производительности и скорости загрузки страниц. Помните, что неправильно настроенное кэширование может привести к проблемам с обновлением контента и негативно сказаться на пользовательском опыте.