Как использовать версию Subversion CSS-файла для предотвращения кеширования браузера - PullRequest
1 голос
/ 30 марта 2010

StackOverflow реализует это так:

 <link rel="stylesheet" href="http://sstatic.net/so/all.css?v=4542">

Каждый раз, когда ссылочные файлы изменяются, атрибут href тега ссылки обновляется в коде HTML, таким образом, поддерживается кэширование и обновляются ссылочные файлы.

Мой вопрос - как получить версию Subversion этого CSS-файла для включения в ссылку? Ключевые слова Subversion сообщают вам только ревизию файла, в котором вы находитесь.

Я работаю с PHP / CodeIgniter + jQuery.

Ответы [ 3 ]

2 голосов
/ 30 марта 2010

all.css - статический файл.

Параметр увеличивается каждый раз, когда файл изменяется, чтобы убедиться, что браузер неправильно его кэширует, так как http://sstatic.net/so/all.css?v=4542 и http://sstatic.net/so/all.css?v=400 отображаются как разные файлы.

Это также обычно используется в рекламных сетях, где «хиты» подсчитываются в зависимости от того, сколько раз загружается графика, и кеши в браузере будут искажать истинное значение просмотров.

0 голосов
/ 31 марта 2010

Запустите команду svn info --xml / path / to / file и посмотрите на info / commit / revision. Это последняя ревизия, когда этот конкретный файл изменился.

Используя вышеизложенное, вы можете написать утилиту для создания сопоставления между файлом js / css / img и номером его версии. Затем это отображение можно загрузить в php и добавить в виде строки запроса, как это делает stackoverflow.

Преимущество этого подхода состоит в том, что версия будет только изменяться при фактическом изменении ресурса. Поэтому вы можете установить агрессивные заголовки кеша - по сути, указав браузеру кешировать ресурс навсегда.

0 голосов
/ 30 марта 2010

Используйте то, что называется svn commit hook. Извините, я не получил подробности, но, надеюсь, вы можете найти их, прибегая к помощи.

Кстати ... вы можете использовать временную метку файла в качестве кешбастера

index.php?p=blabla&v=".filemtime('mystyle.css') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...