诸如http://mydomain.com/text/SGVsbG8gd29ybGQh/params/Y29sb3I9I2Y5NzMwNixmb250LWZhbWlseT1Db21pYyBTYW5zLGZvbnQtc2l6ZT0yMnB4LGZvbnQtd2VpZ2h0PWJvbGQsZm9udC1zdHlsZT1ub3JtYWwsdGV4dC1kZWNvcmF0aW9uPW5vbmUsdGV4dC1hbGlnbj1sZWZ0/96之类的URL调用PHP脚本,该脚本根据URL中包含的编码信息生成图像。信息编码是实际文本,加上一些格式选项(例如颜色,字体粗细等)。
第一次调用此URL时,会生成映像,保存到磁盘,然后作为响应返回。从第二次调用相同的URL开始,图像从磁盘加载并输出到客户端,而不是重新生成。
如何强制浏览器将此类URL视为存储图像文件的任何其他路径并对其进行缓存,以便下次调用URL时,浏览器将从其缓存中加载图像?
顺便说一句,我在控制器中的代码(基于CodeIgniter)如下:
public function addText($text, $params, $resolution=96) {
$this->load->model("textimage_model");
$image = $this->textimage_model->getImage($text, $params, $resolution);
// Prepare the response headers and output the image to the client
header("Content-type: image/png");
header("Content-disposition: inline; filename=mytext.png");
if (is_string($image)) {
readfile($image);
} elseif (is_resource($image)) {
imagepng($image);
imagedestroy($image);
} else {
//
}
}
答案 0 :(得分:4)
发送缓存标题。
$seconds_to_cache = 60 * 60 * 24; // 1 day
header("Pragma: cache");
header("Cache-Control: max-age=" . $seconds_to_cache);
由于您的缓存机制似乎是指纹,因此您可以让浏览器永久缓存它。