2013-09-30 3 views
2

Я создаю изображения динамически, на своей странице, и я говорю браузеру кэшировать изображения, которые работают. Но когда я нажимаю F5, чтобы обновить страницу, перезагрузить изображения, и они не должны этого делать. Вот HTML, который я использую:Кэш динамических изображений лучше

<img width="240" height="240" 
src="/user-data/images/image.php?id=2&file=1234567890&height=240&width=240" /> 

И здесь есть PHP заголовки часть:

header("Cache-Control: private, max-age=172800, pre-check=172800"); 
header("Pragma: private"); 
// Set to expire in 2 days 
header("Expires: " . date(DATE_RFC822, strtotime(" 2 days"))); 
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){ 
    // if the browser has a cached version of this image, send 304 
    header('Last-Modified: ' . $_SERVER['HTTP_IF_MODIFIED_SINCE'], true, 304); 
    exit; 
} 

Итак, это то, что я могу контролировать, когда кто-то нажмите F5 ? Я что-то упустил из своих заголовков?

+0

Вы обеспокоены перезагрузкой изображения (проблема с пропускной способностью) или сценарием, создающим одно и то же изображение (проблема с загрузкой сервера)? –

+0

Если вы нажмете F5, я знаю, что некоторые браузеры, как правило, извлекают все снова, независимо от заголовков кеширования. Однако, если вы просматриваете гиперссылки (даже далеко от страницы и обратно), браузер правильно использует кеш. Возможно, стоит проверить, прежде чем пытаться исправить проблему, которая может не существовать :) –

+0

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

ответ

0

Если вы используете FastCGI - ставить theese строки в файле .htaccess:

RewriteEngine On 
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}] 

И $_SERVER['HTTP_IF_MODIFIED_SINCE'] будет доступен.

Смежные вопросы