Сброс кеша файлов, подключаемых в теме дизайна, при их редактировании файлов по ftp Есть решение

Во темах дизайна .js, .css файлы подключаются в head.html таким образом:

<link href="{$wa_theme_url}css/site.css?v{$wa_theme_version}" rel="stylesheet">

При редактировании файла "site.css" через админку переменная {$wa_theme_version} меняет свое значение и у пользователей сайта закешированный файл сбрасывается (если, конечно, на сервере настроено кеширование и пользователь уже был на сайте).

Однако если редактировать файл по ftp (я использую для подключения filezilla и редактор notepad++), то переменная не меняет свое значение и кеш не сбрасывается. Я взял за привычку каждый раз после редактирования .css файла заходить в head.html и вручную корректировать это значение. например, так: 

<link href="{$wa_theme_url}css/site.css?v11" rel="stylesheet">


Хотя, пожалуй, можно было бы делать так:

<link href="{$wa_theme_url}css/site.css?v11{$wa_theme_version}" rel="stylesheet">

Но не суть. Это немного поднадоело. Всё равно нет-нет, но забудешь вручную обновить версию. Может, кто знает как можно автоматически обновлять {$wa_theme_version} в таком случае? 

2 ответа

  • 1
    chikurov-seo 27 октября 2020 12:13 # Решение

    подсказали в телеге.

    • +1
      Николай Иванов Николай Иванов 27 октября 2020 14:57 #

      А как оно работает?
      md5 вычисляется например в index.html. то есть именно этот шаблон компилируется и кэшируется.
      Если меняется user.css, то технически в index.html ничего не поменялось и скопилированный шаблон будет жить до истечения кэша. Потом md5 пересчитается и будет ок(по умолчанию через час вроде).
      Если отключать кэширование, то любой более-менее нагруженный сайт загнётся.
      Или я чего то не понял?

      • +1
        Алексей Алексей Webasyst 27 октября 2020 16:35 #

        Оно читает файл css в память, берёт хэш от его содержимого и добавляется в параметр.

        На период разработки можно было бы просто сделать

        <link href="{$wa_theme_url}css/site.css?v{$wa_theme_version}{time()}" rel="stylesheet">

        Либо проверку по cookie.

        • +1
          Николай Иванов Николай Иванов 28 октября 2020 08:23 #
          Оно читает файл css в память, берёт хэш от его содержимого и добавляется в параметр.

          Это понятно. Немного не так представлял себе работу механизма кэширования у smarty, пришлось поплотнее копнуть. Считал что такие вещи, как тот же md5 он хранит уже в вычисленном виде. Оказалось что нет.

  • 1
    Syrnik.com 25 октября 2020 18:40 #

    В theme.xml править номер версии?

    • +1
      chikurov-seo chikurov-seo 26 октября 2020 09:56 #

      Как автоматически править в момент сохранения файла?

      Примерно понимаю, что это может работать как-то так:


      {filesaved}
          {$counter = getThemeVersion()}
          {$counter = $counter + 1}
          {setThemeVersion($counter)}
      {/filesaved

      Но не могу понять как вызывать функцию {filesaved} в момент сохранения файла (и куда вообще подобный код работает, если речь, например, о файле .css)? Есть ли вообще такая техническая возможность? Может есть в других программах, например, phpstorm? Или я сейчас вообще фигню несу, и все разработчики при изменении одного файла и необходимостью изменения другого файла просто руками вносят эти правки в другом файле?

      • +1
        Николай Иванов Николай Иванов 26 октября 2020 11:21 #

        По ftp никак, имхо.
        Если по взрослому, то локальный git-репозитарий, git-хук pre-commit и скрипт который будет менять версию в theme.xml. Само собой, на каждый клиентский сайт свой git-репо, заодно и история изменений и возможность отката и пр.

        По простому - менять руками версию или не забывать после заливки по ftp заходить в админку, "пошевелить" какой-нибудь шаблон.

        • +1
          chikurov-seo chikurov-seo 26 октября 2020 14:13 #

          > По простому - менять руками версию или не забывать после заливки по ftp заходить в админку, "пошевелить" какой-нибудь шаблон.

          - Когда-то давно любил экономить время и делать мелкие правки в админке. Потом, правда, заходил в тот же шаблон по ftp, а там каша. Вся табуляция летела к чертовой матери. Да и одно нечаянное движение из визуального редактора в обычный может привести к неожиданным последствиям, вплоть до фатал еррора. У меня, например, был случай когда на странице был такой код:

          {if $smth}
              <span>blabla</span>
          {/if}

          А после правок со стороны клиента чудесным образом превращался визуальным редактором примерно в такой:

          <p>{if $smth}</p>    
              <p><span></span><span>blabla</span><span></span><span></span><span></span></p><p></p>
          <span></span>{/if}<span></span>

          С того раза шевеление шаблонов в админке у меня под запретом =)

          > Если по взрослому, то локальный git-репозитарий, git-хук pre-commit и скрипт который будет менять версию в theme.xml.

          то локальный git-репозитарий, git-хук pre-commit и скрипт

          - Спасибо большое! Понял куда копать.


          Осталось понять, как определить что пора взрослеть и разбираться с git?)

          И, по опыту, сколько времени на освоение основ всей этой магии уйдет? день-два или неделя-три?

          • +1
            Николай Иванов Николай Иванов 26 октября 2020 17:16 #

            Чтобы просто начать работать с git час максимум. С нуля. Настройка, gitignore, инициалиация, комиты. Если работаете над проектом в одиночку, то ветки, мёрджи, разрешение конфликтов, пуш/пул и пр. вам скорее всего еще долго не понадобятся.
            Инфы в инете полно по этому делу.

          • +2
            Николай Иванов Николай Иванов 26 октября 2020 17:19 #

            Работа с шаблонами в режиме визуального редактора у нас под запретом. И всем клиентам строго на строго запрещено что-то там ковырять. Не удержались - переключили с html в визуальный? Сохранили? Сломалось? Молодцы - в кассу -)

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите