最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP header()输出图片缓存
时间:2022-06-24 21:03:40 编辑:袖梨 来源:一聚教程网
很多开发中,我们试图使用header("Content-type: image/jpeg");来 输出图片,试图用一些php的图像处理技术,让输出图片更加智能和动感。但我们常常遇到新的问题,除非你规定不同的URL结构,并采用服务器技术将图片缓 存,否则很有可能这些输出图片会消耗大量的流量。怎么把它们缓存起来,下次用户访问的时候调用缓存呢?(前提是你的这个图片希望保持不变)
| 代码如下 | 复制代码 |
| // put this above any php image generation code: session_start(); header("Cache-Control: private, max-age=10800, pre-check=10800"); header("Pragma: private"); header("Expires: " . date(DATE_RFC822,strtotime(" 2 day"))); |
|
在header("Content-type: image/jpeg");上方添加上面这段代码,它将规定当前页面缓存的时间(两天),并在下一次访问中使用这个缓存时间节点。
接下来判断是否已经有缓存,如果有,就使用缓存。
情况一:如果浏览器对当前页面已经有缓存,那么就直接使用它。
| 代码如下 | 复制代码 |
| // the browser will send a $_SERVER['HTTP_IF_MODIFIED_SINCE'] if it has a cached copy 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; } |
|
情况二:浏览器缓存了当前页,虽然我们更新了某些图片信息,但来源图片本身没有变化,而且我们希望使用之前的缓存,那么也使用缓存。
| 代码如下 | 复制代码 |
|
$img = "some_image.png"; |
|
当然,有些特殊的情况我们还必须考虑,但上面的代码基本上能够带领我们的思路。对了,记得把它们都放在header("Content-type: image/jpeg")的上面。
接着我们来看个例子吧
| 代码如下 | 复制代码 |
|
//调整图片大小 |
|
相关文章
- 嘟嘟传奇嘟嘟之恋任务攻略 03-21
- 《元启世界》法师玩法攻略 03-21
- 耐玩的角色扮演类网络游戏推荐哪些 2026高人气的角色扮演手游下载分享 03-21
- 三角洲行动航天基地每日密码3月20日-航天基地3月20日密码 03-21
- 热门的像素射击游戏排行榜前五推荐 2026值得下载的像素射击游戏汇总 03-21
- 《生存33天》联盟对决玩法介绍 03-21