Вариант решения проблемы автоматического сброса кеша на стороне пользователя
Это обсуждение, начатое в ветке комментариев здесь. Прошу разработчиков и всех, кто понимает суть вопроса высказаться о том, какой из способов очистки кеша таблиц стилей и скриптов будет наилучшим.
Этот вопрос решает давнюю проблему сброса кеша на стороне пользователя.
З.Ы. хотел создать опрос, но ограничение в 500 символов поставило в тупик.
- Формировать итоговое имя файла, на основе имен файлов и их даты изменения
- Дать возможность админу задавать в настройках параметр, прибавляемый к файлам (?ver=N)
Описание
- Первый пункт — это автоматическая генерация имени сжатых файлов на основе проверки имен файлов и их даты редактирования.
Плюсы:
- автоматически, админ поменял что-то в таблице стилей, кеш обновился у пользователей автоматически
Минусы:
- ресурсоёмко (сканирование дат редактирования всех входящих файлов, коих очень много)
- только для сжатых файлов, при отключенном сжатии ксс и жс данная схема не работает
- Второй вариант — старый дедовский способ добавления параметра к загружаемым стилям и скриптам "?ver=N", который заставляет браузер скачивать новые файлы.
Плюсы:
- быстро (не добавляется никакой нагрузки)
Минусы:
- требует ручного редактирования (в настройках) значения параметра для каждого сброса кеша у пользователя
Этот вопрос решает давнюю проблему сброса кеша на стороне пользователя.
З.Ы. хотел создать опрос, но ограничение в 500 символов поставило в тупик.
17 комментариев
hashfile.css?datetime
т.е. в гет параметр выводить дату минифицированного файла. Все остальное оставить как есть.
Если кеш сбросят, то изменится дата и время файла, а название останется прежним.
как быть для отключенного сжатия файлов вопрос остается тот же.
Сбросил кеш — значение увеличилось на 1 автоматически.
PSNet те самому в этой ситуации не смешно?.. livestreet.ru/blog/16588.html#comment267625
и динамически задавать соответствующий путь до этих файлов, как-то так:
/cache/skin/[DATE_TIME]/hashfile.css
При сбросе кеша
— формируем его заново здесь /YYYYMMDD_HHMMSS/hashfile.css
— подменяем пути к закешированным файлам
но не решает того же вопроса что делать если сжатие отключено. выходит что параметр "?ver" таки нужен в комбинации.
для path.static.skin.css и path.static.skin.js динамически назначаем пути вида:
/___path.static.skin___/css/[DATE_TIME]/
и наверное нужна команда от админа, по которой:
— директория с именем [DATE_TIME] переименовывается в текущую дату и время
— для path.static.skin.css и path.static.skin.js назначаются соответствующие пути
кстати, нельзя ли подключать css не перечислением всех фалов, а примерно так?:
___path.static.skin___/css/*.css
а далее можно:
___path.static.skin___/css/*.css?timestamp=[DATE_TIME]
Перед компиляцией шаблона смарти добавлять параметр timestamp для статичных ресурсов.
Параметр хранить только в памяти. По кнопке сброса кэша смарти автоматически проставлять новый timestamp.
Дословно, для особо упёртых тут: livestreet.ru/blog/16588.html#comment267625