Что такое заголовок expire и как его реализовать в ASP.NET и PHP? - PullRequest
0 голосов
/ 21 июля 2009

Сегодня я проверил статистику производительности моего сайта, используя YSlow . Я получил предупреждение (или ошибка может быть), как показано ниже

Add Expires headers
There are 15 static components without a far-future expiration date.

    * (no expires) http://www.example.com/video/css/global.css
    * (no expires) http://www.example.com/video/js/global.js
    * (no expires) http://www.example.com/video/images/main-bg.png

Что это значит и как этого добиться в PHP и ASP.NET. Я на сервере общего хостинга, поэтому, пожалуйста, скажите мне, как это сделать, используя код, потому что я не смогу внести никаких изменений на стороне сервера.

Если срок действия заголовка истекает, есть ли вероятность, что, если я внесу изменения в CSS, пользователь не получит их сразу, потому что css и другие файлы кэшируются в течение определенного времени (1 месяц, неделя ). Это так?

Есть ли какие-либо недостатки в использовании заголовков expire ??

Ответы [ 2 ]

5 голосов
/ 21 июля 2009

PHP

$time = time() + 3 * 24 * 60 * 60; // 3 days
header('expires: ' . gmdate('D, d M Y H:i:s \G\M\T', $time);

Но я бы порекомендовал вам модуль Apache mod_expires [1]. Затем вы можете поместить что-то вроде этого в файл .htaccess

<FilesMatch "\.(jpg|gif|png|css|js)$">
    ExpiresActive on
    ExpiresDefault "access plus 3 days"
</FilesMatch>

Это будет соответствовать всем изображениям, CSS и JavaScript файлам и установить заголовок Expires на 3 дня

[1] http://httpd.apache.org/docs/2.0/mod/mod_expires.html

2 голосов
/ 21 июля 2009

Очевидно, что недостатком заголовка expire является то, что вы уже сказали. Если вы сделаете изменение, пользователь не получит новую версию, пока не истечет срок действия.

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

Эти параметры по-прежнему работают только с динамическими страницами, для этого со статическим содержимым, таким как таблицы стилей или изображения, вам потребуется больший доступ к серверу. (Некоторые из этих результатов можно получить и с помощью файла .htaccess)

Здесь я погуглил дальнейшее чтение для вас.

Ресурс PHP: http://www.sitepoint.com/article/caching-php-performance/

Ресурс ASP.NET: http://ondotnet.com/pub/a/dotnet/2002/12/30/cachingaspnet.html

.htaccess Ресурс: http://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching.html

...