2013-09-30 45 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']将可用。