Время истечения изображения - PullRequest
1 голос
/ 29 мая 2010

Инструмент Google Page Speed ​​рекомендует установить заголовки Expires для изображений и т. Д. Но какой самый эффективный способ установить заголовок Expires для изображения?

В настоящее время перенаправьте все запросы изображений в imagehandler.php, используя htaccess:

/*
HTTP/1.1 404 Not Found, HTTP/1.1 400 Bad Request and content type detection stuff
...
*/

header( "Content-Type: " . $content_type );
header( "Cache-Control: public" );
header( "Last-Modified: ".gmdate("D, d M Y H:i:s", filemtime($path))." GMT");
header( "Expires: ". date("r",time() + (60*60*24*30)));
readfile( $path );

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

Ответы [ 2 ]

3 голосов
/ 29 мая 2010

Вы можете добавить его в файл .htaccess.

<FilesMatch "\.(ico|jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>

Найдено на AskApache .

Конечно, если вы хотите, чтобы изображения были изменены, они не будут загружены снова, пока не истечет .

Вы можете решить это, сделав что-то вроде этого

function getImage($path) {
    // may need to add a DOCROOT constant here before filemtime() argument
    return $path . '?m=' . substr(filemtime($path) -5);

}

Я просто использую substr(), чтобы сделать его немного короче. Вероятность их столкновения минимальна, но может произойти. Не забудьте проверить это.

Используйте это так

<img src="<?php echo getImage('path/to/your/image.jpg'); ?>" alt="" />
2 голосов
/ 29 мая 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...