вторник, 2 ноября 2010 г.

Отменяем кэширование CSS

Если вы часто (или хотя бы иногда!) меняете CSS-файлы фронтенда, то имеет смысл подумать над тем, чтобы не вводить в ступор пользователей, которые видят сайт в стилях, закэшированных их браузером. Иными словами, вы поменяли стили, а юзер думает "какого хрена у меня оно так выглядит?".

Самое простое решение, которое пришло в голову: добавлять к пути CSS-файла таймштамп его последней модификации. Всего два шага:

1. Во view.yml пишем:

  stylesheets:    [<?php echo filemtime(sfConfig::get('sf_web_dir').'/css/main.css').'/main.css' ?>]


2. В .htaccess добавляем:

  RewriteRule ^css/[0-9]+/(.*?)$ /css/$1 [L]

4 комментария:

  1. Это же ужасно! Никогда так не делайте.
    Вместо этой хрени лучше один раз сделать новый хелпер my_include_stylesheets() вместо стандартного include_stylesheets(), и в нем уже генерировать ссылки на файлы с учетом времени модификации.

    ОтветитьУдалить
  2. А не правильней ли перекрыть класс разбора yml и подключения css да и js

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. а можно просто таймстемп добавлять как uri параметр

    stylesheets: [ <?php echo '/main.css?modifed='.filemtime(sfConfig::get('sf_web_dir').'/css/main.css') ?>]
    у меня такое решение работало при кешировании js-файлов

    ОтветитьУдалить