Вариант решения проблемы автоматического сброса кеша на стороне пользователя

Это обсуждение, начатое в ветке комментариев здесь. Прошу разработчиков и всех, кто понимает суть вопроса высказаться о том, какой из способов очистки кеша таблиц стилей и скриптов будет наилучшим.

  1. Формировать итоговое имя файла, на основе имен файлов и их даты изменения
  2. Дать возможность админу задавать в настройках параметр, прибавляемый к файлам (?ver=N)

Описание

  1. Первый пункт — это автоматическая генерация имени сжатых файлов на основе проверки имен файлов и их даты редактирования.

    Плюсы:
    • автоматически, админ поменял что-то в таблице стилей, кеш обновился у пользователей автоматически

    Минусы:
    • ресурсоёмко (сканирование дат редактирования всех входящих файлов, коих очень много)
    • только для сжатых файлов, при отключенном сжатии ксс и жс данная схема не работает

  2. Второй вариант — старый дедовский способ добавления параметра к загружаемым стилям и скриптам "?ver=N", который заставляет браузер скачивать новые файлы.

    Плюсы:
    • быстро (не добавляется никакой нагрузки)

    Минусы:
    • требует ручного редактирования (в настройках) значения параметра для каждого сброса кеша у пользователя

Этот вопрос решает давнюю проблему сброса кеша на стороне пользователя.

З.Ы. хотел создать опрос, но ограничение в 500 символов поставило в тупик.

17 комментариев

avatar
Предлагаю следующий вариант:
hashfile.css?datetime
т.е. в гет параметр выводить дату минифицированного файла. Все остальное оставить как есть.
Если кеш сбросят, то изменится дата и время файла, а название останется прежним.
avatar
это модификация первого варианта с выигрышем в сканировании только одного итогового сжатого файла, вместо сканирования всех входящих в него файлов.

как быть для отключенного сжатия файлов вопрос остается тот же.
avatar
Еще можно чтобы после сброса кеша автоматически увеличивалось значение ver. Так будет наверное самое оптимальное)
Сбросил кеш — значение увеличилось на 1 автоматически.
avatar
Пару дней назад, этот господин уверял всех, что кнопка «F5» спасёт мир >_<
PSNet те самому в этой ситуации не смешно?.. livestreet.ru/blog/16588.html#comment267625
avatar
мы о разных вещах говорили, к тому же этот топик создан из ветки обсуждения, где пользователь сумел нормально объяснить суть вопроса, а вы два слова к кучи связать не могли + до сих пор читать не умеете (даже в этом топике).
avatar
«F5» — наше фсио…
avatar
Обратите внимание — я использую свой ОПИСАННЫЙ метод, и у меня браузер ничего не кэширует. Вот жеж странность…
avatar
Можно сжатые файлы помещать в динамическую директорию /YYYYMMDD_HHMMSS/hashfile.css
и динамически задавать соответствующий путь до этих файлов, как-то так:
/cache/skin/[DATE_TIME]/hashfile.css

При сбросе кеша
— формируем его заново здесь /YYYYMMDD_HHMMSS/hashfile.css
— подменяем пути к закешированным файлам
avatar
это другая версия предложенного выше варианта, под другим соусом так сказать.

но не решает того же вопроса что делать если сжатие отключено. выходит что параметр "?ver" таки нужен в комбинации.
avatar
может аналогичным образом:
"___path.static.skin.css___/grid.css",
"___path.static.skin.css___/common.css",
...
"___path.static.skin.js___/template.js",
...

для path.static.skin.css и path.static.skin.js динамически назначаем пути вида:
/___path.static.skin___/css/[DATE_TIME]/

и наверное нужна команда от админа, по которой:
— директория с именем [DATE_TIME] переименовывается в текущую дату и время
— для path.static.skin.css и path.static.skin.js назначаются соответствующие пути
avatar
похоже с папками перебор…
кстати, нельзя ли подключать css не перечислением всех фалов, а примерно так?:
___path.static.skin___/css/*.css

а далее можно:
___path.static.skin___/css/*.css?timestamp=[DATE_TIME]
avatar
Не совсем понятно про минус 2-го пункта.
Перед компиляцией шаблона смарти добавлять параметр timestamp для статичных ресурсов.
Параметр хранить только в памяти. По кнопке сброса кэша смарти автоматически проставлять новый timestamp.
avatar
в принципе, не такой уж это и минус, никто ведь не будет по 100 раз на дню менять юзерам стили…
avatar
Судя по ответам — все предлагают вариации на тему второго варианта с автоматическим счетчиком по сбросу кеша.
avatar
Эу! Брат — ты же с пеной у рта вчера доказывал — что есть кнопка «F5»? которая решает все проблемы! Куак же так, иопт, какие ещё проблемы с кэшем дружище??..

Дословно, для особо упёртых тут: livestreet.ru/blog/16588.html#comment267625
avatar
Я за второй вариант. Пусть будет отдельная кнопка в админке, которая просто инкрементит версию стилей.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.