Кеширование, кеширование...

Наверное самая для меня непонятная тема в modx.
Столкнулся с тем, что даже добавление некой уникальной метки к js файлу, который подключен на страницу, не заставляет браузер получить его новую версию.
Подробности.
Базовый шаблон любой страницы.
<!DOCTYPE html>
<html lang="ru">
{include 'head.tpl'}

<body class="main-page">
    <div class="main-wrapper" i>

        {block 'header'}
        {/block}

        {block 'content'}
        {/block}

        {include 'footer.tpl'}
    </div>
    {include 'modals.tpl'}
    {include 'scripts.tpl'}
</body>
</html>
Все что здесь инлюдиться создано как статичные ресурсы.
Есть чанк scripts в котором есть
<script src="assets/a7/js/park.js?v=97.1"></script>
как видно у файла есть версия.
Однако если сменить версию, сохранить чанк, обновить страницу в браузере, то в коде страницы находится «прошлая версия 97.0» и только ctrl+f5 действительно обновляет страницу.
Причем это не только с файлами. В базовом шаблоне есть блок
{block 'content'}
        {/block}
например я его использую в шаблоне, который расширяет мой базовый. И там просто в h1 написан текст. Этот текст тоже кешируется до нажатия ctrl+f5.
Я открываю системные настройки кеширования современного modx и честно признаться, ничего не понимаю.
Единственное поле судя по названию имеет хоть какое тот отношения к кешированию ресурсов. — «Включить частичное кэширование ресурсов» — оно и так отключено.
В старых версиях я помню была возможность одной настройкой отключить кеш.

Поделитесь знаниями, есть возможность запретить кешировать отдельные чанки при подключении их через include? Меня бы устроила возможность вообще отключить любые виды кеша, но не знаю как это сделать.
Александр Мельник
05 августа 2022, 13:27
modx.pro
1
903
+1

Комментарии: 5

Александр Мельник
05 августа 2022, 13:31
0
На всякий случай скрин системных настроек кеширования.
    Сергей Шлоков
    07 августа 2022, 08:47
    0
    Хех, рассказываешь про Ctrl+F5, а лезешь в настройки MODX.

    У тебя проблема с кэшированием браузера, вот и разбирайся с ним — смотри заголовки веб-сервера, которые отвечают за кэширование — всякие там cache-control, expires, pragma…
      Александр Мельник
      07 августа 2022, 09:29
      0
      Если я создаю просто html страницу (вне modx, но на том же сервере, с теми же настройками кеширования, сжатия и прочего) и в ней подключу файл js через script
      И буду изменять имя этого файла или же изменять его версию 97.1 — 97.2
      <script src="assets/a7/js/park.js?v=97.1"></script>
      То браузер получит в html всегда корректную версию, поймет что такого файла нет в его кеше и отправит запрос на получение нового скрипта. Все как и ожидается. Нет необходимости ctl+f5 нажимать.
      Но если точно такая же страница создается в modx, то html страницы не изменяется, и соответственно браузер и не знает, что версия js файла изменилась и берет из кеша. Мне кажется причина все же в кешировании самого modx. Тот статичный чанк
      {include 'scripts.tpl'}
      как то кешируется. И я не знаю способа предотвратить это.
        Сергей Шлоков
        07 августа 2022, 10:12
        0
        Саш, ну ты же понимаешь, что делает Ctrl+F5?

        Для сравнения, создай html файл (скопируй исходник основной страницы) в корне сайта и сравни заголовки ответа сервера в том и другом случае. Возможно, у тебя установлен какой-нибудь модуль для управления заголовком Last-Modified? Обычно, сервер в этом случае отвечает кодом 304.

        от статичный чанк
        {include 'scripts.tpl'}
        как то кешируется.
        Инструкция include никогда не кэширует чанк. Открой кэш страницы и посмотри, что у тебя указано в поле _content.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5