Leave a Comment
Алгоритм конкатенации js-файлов для каждой страницы на лету
Хочется сделать один js-файл на страницу.
Думаю над таким алгоритмом.
- Сразу после процедуры деплоя пользователи грузят кучу отдельных js-файлов, всё как обычно.
- Первый пользователь, зашедший на страницу, ставит lock в кэш (на 1 минуту), означающий, что именно ему повезло создать единый js-файл. При генерации страницы пути всех подключаемых js-файлов сохраняются в массивчик (у нас уже подгрузка яваскритпа идёт не просто через тег script, а через обёртку), по окончании генерации запускается процедура создания единого js-файла с сохранением его на диск под md5-именем. После успешного сохранения в кэш пишется ключ текущей страницы и значение — путь к сохранённому единому js-файлу и стирается lock.
- При заходе пользователя на страничку делается проверка ключа, и если он есть — грузим единый файл, нет — см. предыдущий пункт.
Ключ и lock строятся по типу страницы (не по урлу) и учитывают версию интерфейса и уровень прав пользователя (админам могут понадобиться дополнительные скрипты).
Плюсы — всё прозрачно и если механизм засбоил, ничего не отвалится.
Минусы — не используется кэш браузера (лечится отдельным libs.js), дополнительная кратковременная нагрузка сразу после выкладки новой версии и необходимость на фронтенде держать серверный язык.
Similar Posts
- None Found
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.