1 Отредактировано absorber (01-12-2016 21:00:40)

Тема: Вывод версии файла (CSS или JS)

Вот тут добавил соответсвтующий материал - https://docs.google.com/document/d/1Fac … wmee4nlwgw

Для чего это нужно?
Как мы знаем, на серверах можно настроить кеширование (чтобы статичный файлы типа картинок, JS или CSS кешировались в браузере клиента на N срок.
Но бывают ситуации когда разработчик активно администрирует сайт, и вносит правки в CSS или JS.

Представим ситуацию. На сервере настроено кеширование на 30 дней.

  • 20 числа я зашел на сайт, браузер закешировал CSS шаблона.

  • 24 числа разработчик внес измененеия в CSS.

  • 29 числа я опять зашел на сайт, и у меня грузится старый CSS, не новый.

А ведь изменения были сделаны! Как быть?

Исправляется это подстановкой в УРЛ пути к css или JS, версии.

Везде пишут так:

<link rel="stylesheet" href="http://sitename/templates/css/_css/adaptive.css">

А мы напишем вот так:

<link rel="stylesheet" href="http://sitename/templates/css/_css/adaptive.css?v=1480333475">

И “о ЧУДО”, я захожу 29 числа, и у меня грузится CSS Новой версии.
Так вот что бы автоматически уснанавливалась версия, надо писать так:

<link rel="stylesheet" href="{$THEME}_css/adaptive.css?v={filemtime($CI->template->template_dir . '_css/adaptive.css')}">

Вот эта функция filemtime, возвращает время последнего изменения файла на сервере. Все просто smile


P.S. На гениальность не претендую, просто решение которым я недавно начал пользоваться, возможно кому-то будет полезно

Разработка продающих сайтов. Портфолио тут - pulse.studio. Скайп - absorberex

2

Re: Вывод версии файла (CSS или JS)

Б****кс давно это использует) Можно даже без v=. Это первый лайфхак по функции filemtime - http://php.net/manual/ru/function.filemtime.php

Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!

3 Отредактировано absorber (01-12-2016 19:54:27)

Re: Вывод версии файла (CSS или JS)

supleader пишет:

Б****кс давно это использует) Можно даже без v=.

Кто?

Да, можно и без v=. Там хоть словами пиши)

Разработка продающих сайтов. Портфолио тут - pulse.studio. Скайп - absorberex

4

Re: Вывод версии файла (CSS или JS)

Кто?

Другой популярный коммерческий движок для интернет-магазинов smile

Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!

5

Re: Вывод версии файла (CSS или JS)

Для использования этой фичи в assetManager, идем по пути: /application/modules/CMSFactory/assetManager.php

Для стилей, в функции registerStyle, меняем следующую строку:

CI_Controller::get_instance()->template->registerCssFile('/' . $path, 'before');

на

CI_Controller::get_instance()->template->registerCssFile('/' . $path . '?' . filemtime($path), 'before');

Для JS, в функции registerScript, меняем следующую строку:

CI_Controller::get_instance()->template->registerJsFile('/' . $this->buildScriptPath($name), $position);

на

CI_Controller::get_instance()->template->registerJsFile('/' . $this->buildScriptPath($name) . '?' . filemtime($this->buildScriptPath($name)), $position);

После этих правок, стили подключенные через ->registerStyle('какойто_стиль'), как и JS скрипты, подключенные через
->registerScript('какойто_скрипт'), будут подгружаться всегда актуальные (по дате последних изменений).

Разрабатываю модули для ImageCMS Corporate (оплата PayPal).