Автообновление кеша

Тема в разделе "Готовые модули и модификаторы. Бесплатно", создана пользователем Tom, 8 авг 2024.

  1. Tom

    Tom Специалист

    Сообщения:
    1.052
    Симпатии:
    382
    Часто при разработке новых сайтов, нужно просить заказчика обновлять/сбрасывать кеш браузера. Ну и как вариант, человек не знает, не умеет, не понимает. И минутное дело превращается в мучение.
    Модификатор не для всех. Не нужно пытаться устанавливать его, если не до конца понятен его алгоритм работы.
    НЕ забывайте удалять , после выполнения работы. Выкладываю в виде кода, что бы избежать рандомных установок новичками "на всякий".

    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <modification>
        <name>New Site Auto Refresh</name>
        <code>new_site_auto_refresh</code>
        <version>1.0</version>
        <author>Tom</author>
        <file path="catalog/view/theme/*/template/common/footer.twig">
            <operation>
                <search><![CDATA[</body>]]></search>
                <add><![CDATA[
                   <script>
                      function refreshResources() {
                          const timestamp = new Date().getTime();
                          const elements = document.querySelectorAll('link[rel="stylesheet"], script, img');
    
                          elements.forEach(element => {
                              if (element.tagName === 'LINK') {
                                  element.href = (element.href.split('?')[0] || element.href) + '?' + timestamp;
                              } else if (element.tagName === 'SCRIPT') {
                                  element.src = (element.src.split('?')[0] || element.src) + '?' + timestamp;
                              } else if (element.tagName === 'IMG') {
                                  element.src = (element.src.split('?')[0] || element.src) + '?' + timestamp;
                              }
                          });
                      }
    
                      refreshResources();
                   </script>
                ]]></add>
            </operation>
        </file>
    </modification>
    
     
    Последнее редактирование: 8 ноя 2024
    Tesloz и Romans нравится это.
  2. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    913
    Симпатии:
    128
    Я бы добавил следующий момент, так как порой в таких линках используют get-переменные

    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <modification>
        <name>New Site Auto Refresh</name>
        <code>new_site_auto_refresh</code>
        <version>1.0</version>
        <author>Tom</author>
        <file path="catalog/view/theme/*/template/common/footer.twig">
            <operation>
                <search><![CDATA[</body>]]></search>
                <add><![CDATA[
                   <script>
                      function refreshResources() {
                          const timestamp = new Date().getTime();
                          const elements = document.querySelectorAll('link[rel="stylesheet"], script, img');
    
                          elements.forEach(element => {
                              if (element.tagName === 'LINK') {
                                  element.href = element.href + (element.href.split('?').length > 1 ? '&' : '?') + timestamp;
                              } else if (element.tagName === 'SCRIPT') {
                                  element.src = element.src + (element.src.split('?').length > 1 ? '&' : '?') + timestamp;
                              } else if (element.tagName === 'IMG') {
                                  element.src = element.src + (element.src.split('?').length > 1 ? '&' : '?') + timestamp;
                              }
                          });
                      }
    
                      refreshResources();
                   </script>
                ]]></add>
            </operation>
        </file>
    </modification>
     
    Tom нравится это.