Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 2233 Просмотров
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Версии CSS и JS файлов
« : 07.08.2018, 08:09:50 »
Привет, коллеги!
В последних версиях Joomla появилась такая штука как автоматический контроль версий CSS и JS файлов и обновление путей до них.

В шаблонах это выглядит так:
Код
JHtml::_('stylesheet', 'main.css', array('version' => 'auto', 'relative' => true));
'version' => 'auto'

В HTML коде страницы:
Код
<link href="/templates/mkelektro/css/main.css?dada6753446d773121b16e74c4633248" rel="stylesheet" />
Параметр ?dada6753446d773121b16e74c4633248
Соответственно, параметр время от времени обновляется.

Это очень круто. Но:
Кто знает, как это работает?
Когда обновляются пути? После какого действия или события?
Предлагаю это немного обсудить  ^-^

Поискал на оф. сайте, не нашёл.
Поделитесь, пожалуйста, если кто знает.
« Последнее редактирование: 07.08.2018, 08:33:26 от rsn »
Возможно, будет интересно: Интеграция с Ozon
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Версии CSS и JS файлов
« Ответ #1 : 07.08.2018, 09:59:42 »
по факту это актуально только для файлов ядра Joomla. параметр этот - это по сути просто версия Joomla.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Re: Версии CSS и JS файлов
« Ответ #2 : 07.08.2018, 10:47:28 »
del
 
« Последнее редактирование: 07.08.2018, 11:56:45 от draff »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #3 : 07.08.2018, 12:28:34 »
по факту это актуально только для файлов ядра Joomla. параметр этот - это по сути просто версия Joomla.
Спасибо за ответ.
Можно уточнить: почему Вы считаете именно так, что событием для обновления параметра служит обновление Joomla?

Мне показалось, что параметр обновляется чаще, чем обновление Joomla. Хотя строго не следил, могу и ошибаться.

И кстати, это не менее актуально для файлов шаблона. Что я, собственно, и использую.
Возможно, будет интересно: Интеграция с Ozon
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Версии CSS и JS файлов
« Ответ #4 : 07.08.2018, 12:46:34 »
я не сказал, что событием для обновления параметра служит обновление Joomla. я сказал что по сути этот параметр - это версия Joomla :) а параметр обновляется гораздо чаще, например после установки расширений. а при включенном дебаге - вообще каждый раз при загрузке страницы. но вопрос в том, что это никак не влияет на сторонние расширения. ну вернее влияет, только толку что вы например установили какой-нибудь модуль, хеш версии поменялся, а файлы CSS например шаблона даже не думали меняться.  а тем не менее они будут перезагружены. разве это правильно? и наоборот - вы по фтп поменяли css шаблона, хеш версии при этом само собой не менялся. итого браузер грузит файл из кеша. короче, имхо идея нормальная, а реализация хромает.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Версии CSS и JS файлов
« Ответ #5 : 07.08.2018, 13:13:34 »
я не сказал, что событием для обновления параметра служит обновление Joomla. я сказал что по сути этот параметр - это версия Joomla :) а параметр обновляется гораздо чаще, например после установки расширений. а при включенном дебаге - вообще каждый раз при загрузке страницы. но вопрос в том, что это никак не влияет на сторонние расширения. ну вернее влияет, только толку что вы например установили какой-нибудь модуль, хеш версии поменялся, а файлы CSS например шаблона даже не думали меняться.  а тем не менее они будут перезагружены. разве это правильно? и наоборот - вы по ftp поменяли CSS шаблона, хеш версии при этом само собой не менялся. итого браузер грузит файл из кеша. короче, имхо идея нормальная, а реализация хромает.
Кстати, в более ранних версиях был такой метод getMd5Version. Сейчас он depricated, т.к. создаёт большую нагрузку, при каждой загрузке сайта.
Нынешний метод getMediaVersion не создаёт такой нагрузки, но не даёт правдивости хэшей, но если использовать встроенный кэш Joomla - проблема, как бы, сама себя ликвидирует. Т.к. хэш медиаверсии кэшируется и любое изменение в стилях должно приводить к сбросу кэша, а значит и к генерации нового хэша. Как по мне - реализация неплохая, но ей мало кто пользуется. Да и на боевых проектах редко вносятся такие изменения, что хэши постоянно сбрасывать приходится
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #6 : 07.08.2018, 13:23:30 »
Теперь понятнее. Спасибо.
и наоборот - вы по ftp поменяли CSS шаблона, хеш версии при этом само собой не менялся. итого браузер грузит файл из кеша. короче, имхо идея нормальная, а реализация хромает.
Согласен.
Развить бы то того, чтобы хеш обновлялся при обновлении даты редактирования css/js файла, вот это была бы вещь.
Возможно, это будет реализовано позже.

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Версии CSS и JS файлов
« Ответ #7 : 07.08.2018, 13:27:20 »
Развить бы то того, чтобы хеш обновлялся при обновлении даты редактирования css/js файла, вот это была бы вещь.
да, так и нужно
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #8 : 09.08.2018, 07:45:16 »
Код
JHtml::_('stylesheet', 'main.css', array('version' => 'auto', 'relative' => true));
Тут вместо auto можно указать просто число, номер версии.

Соответственно, можно этот номер править руками или подставить переменную.

Разумеется, тоже самое (подставить переменную) можно сделать в случае прямого указания ссылки на CSS в виде строки:
Код
<link rel="stylesheet" href="/templates/mkelektro/css/bottom.css?<?php echo $peremennaya; ?>">

Как думаете, что если сделать небольшой скрипт, который выполнять кроном каждые 5-10 минут, чтобы он записывал в дополнительный небольшой файл (в шаблоне) номер версии (если изменилась дата обновления файла css), и подцеплять этот файл в шаблон для использования номера версии?

Интересны мнения на этот счёт
Возможно, будет интересно: Интеграция с Ozon
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: Версии CSS и JS файлов
« Ответ #9 : 09.08.2018, 08:18:10 »
Народ, а нельзя как-то вручную обновить вот этот рандомный хвост в один клик? Было бы удобно.
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Версии CSS и JS файлов
« Ответ #10 : 09.08.2018, 09:06:51 »
Включить режим отладки, зайти на фронтенд, выключить режим отладки
*

Театрал

  • Захожу иногда
  • 230
  • 7 / 0
Re: Версии CSS и JS файлов
« Ответ #11 : 12.01.2020, 02:03:01 »
Тоже вот хотелось бы, чтоб при малейшем изменении файла менялась и "его версия"... не включая режим отладки!

====

В общем вот, что смог придумать:

Код

function fileVersion ($fileName) {
    $folder = end(explode(".", $fileName)); // имя папки берём из расширения файла, т.к. стили и скрипты лежат в папках CSS и JS
    $realpath = realpath(dirname(__FILE__) . '/' . $folder . '/' . $fileName);
    return  'ver=' . date("Ymdhi", filemtime($realpath));
}

JHtml::_('stylesheet', 'template.css', array('version' => fileVersion ('template.css'), 'relative' => true));

JHtml::_('script', 'template.js', array('version' => fileVersion ('template.js'), 'relative' => true));


Проверок на существование файла нет, т.к. если JHtml::_('stylesheet', 'template.css' не сработает (файл отсутствует), то и функция не будет вызвана.
« Последнее редактирование: 26.12.2021, 12:21:31 от Театрал »
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Версии CSS и JS файлов
« Ответ #12 : 12.01.2020, 10:12:41 »
Так а чем плох
Код
JHtml::_('script', 'template.js', array('version' => 'auto'));
или
Код
JDocument::addScriptVersion('template.js');
?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
Re: Версии CSS и JS файлов
« Ответ #13 : 12.01.2020, 10:51:35 »
Там версия насколько понимаю зависит от версии Joomla, если вручную вносить правки, то версия не изменится.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Версии CSS и JS файлов
« Ответ #14 : 12.01.2020, 11:05:24 »
Там версия насколько понимаю зависит от версии Joomla, если вручную вносить правки, то версия не изменится.
Надо же - действительно так. Проверил сейчас - версия не поменялась.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #15 : 13.01.2020, 09:21:21 »
Я пока остановился на этом:

Разово:
В начале index.php шаблона после defined('_JEXEC') or die;
Код
$version = 221
;
Ниже, там, где подключаю CSS и JS - дописываю версию.
Так:
Код
JHtml::_('stylesheet', 'main.css', array('version' => $version, 'relative' => true));
И так:
Код
<link rel="stylesheet" href="<?php echo '/templates/'.$this->template.'/css/bottom.css?'.$version; ?>">
<script src="<?php echo '/templates/'.$this->template.'/js/custom.js?'.$version; ?>"></script>

В дальнейшем, если обновил CSS или JS и хочу, чтобы он точно обновился у посетителей, - правлю в начале index.php шаблона номер версии на следующий.
Это не кнопка в один клик, но тоже очень простое и быстрое действие.

Всё работает ОК. Никакой доп. нагрузки и задержки на проверку модификации файла.

Можно, конечно, это автоматизировать. Но пока другие задачи более приоритетны. Это и так устраивает.
Возможно, будет интересно: Интеграция с Ozon
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #16 : 13.01.2020, 09:25:24 »
Кстати, сейчас подумал:
Можно номер версии брать из версии расширения (шаблона).
А эту версию шаблона, в свою очередь, проверять и обновлять, скажем, небольшим скриптом, запускаемым кроном хоть каждую минуту. Если изменился хотя бы 1 файл из шаблона - обновить последние цифры в версии шаблона.
Возможно, будет интересно: Интеграция с Ozon
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать блок в мобильной версии сайта

Автор Grigorii

Ответов: 10
Просмотров: 704
Последний ответ 10.02.2024, 19:38:34
от darkghost
widgetkit - разные версии

Автор all_zer

Ответов: 0
Просмотров: 256
Последний ответ 14.09.2023, 18:54:03
от all_zer
Отображение меню мобильной версии сайта

Автор AnSk

Ответов: 1
Просмотров: 351
Последний ответ 22.08.2023, 18:52:55
от arma
Проблема с адаптацией сайта для мобильной версии

Автор chen

Ответов: 0
Просмотров: 437
Последний ответ 24.01.2023, 10:21:23
от chen
Radical multifield и пути для хранения файлов

Автор d2boy

Ответов: 1
Просмотров: 493
Последний ответ 03.01.2023, 00:34:00
от d2boy