Агрессивное кеширование файлов.

В заметке идет речь об агрессивном кеширование файлов, когда время протухания кеша устанавливается на очень большой срок.

В этой заметке пойдое речь о кешировании различного рода файлов средствами апачи. Большинство начинающих веб разработчиков избегает пользоваться HTTP кешированием. В этой заметке я хоче поделиться опытом. Чтобы закешировать рисунки в файл .htaccess следующие строки:

<IfModule mod_expires.c># turn on the module for this directoryExpiresActive on# cache common graphics for 10 yearsExpiresByType image/jpg "access plus 10 years"ExpiresByType image/gif "access plus 10 years"ExpiresByType image/jpeg "access plus 10 years"ExpiresByType image/png "access plus 10 years"# cache CSS for 24 hoursExpiresByType text/css "access plus 10 years"# set the default to 24 hoursExpiresDefault "access plus 2 hours"</IfModule>

Что делает приведенная настройка, в случае если апач установлен c модулем mod_expires, то на все основные гравические файлы и файлы стилей устанавливается кеширование на 10 лет. Тут-то все и пугаются. А что будет, если какие-либо файлы изменяться? Браузер просто не будет скачикать? Давайте посмотрим, что можно сделать в этом случае. Естественный ответ - поменять путь до файла, например добавить какой либо GET параметр. Тут вариантов много. Например, формировать адрес файла следующим образом: md5 = md5-хеш отфайла. И тогда адрес до файла отдавать в виде: file_url?version=md5 Если файл изменился, то соответственно изменится и его хеш. Естественно, что вычислять данное значение нежно только 1 раз при изменении файла. В случае же рисунков, которые загружают пользователи такой метод не очень хорош... Даже совсем не хорош:) Как же быть? Если вайлы, загружают пользователи, то как правило о каждом файле делается запись в базе данных. А что нам мешает туда же записывать время последнего изменения файлов? Вот и будем при каждом обновлении рисунка обновлять время в базе данных. Дальне все просто - отдаем адрес файла в виде: file_url?version=update_time Таким образом, мы создали некоторую "защиту" от протухшего кеша. Таким образом пользователь всегда может увидеть изменившуюся картинку, даже если она закеширована на 10 лет.

Нет комментариев.
Добавить комментарий
Вам необходимо включить показ изображений в браузере для того чтобы увидеть код

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно

Прежде чем высказать свое мнение, прочитайте пожалуйста: правила

Рейтинг@Mail.ru