本文演示PHP使用页眉()输出图片缓存的方式:

当我们生成验证码时,我们需要直接输入图片,通常我们使用标题(内容类型:图像)。这里我们将简要介绍。

在许多开发中,我们尝试使用页眉()内容类型:图像输出,并尝试使用一些PHP图像处理技术,使输出图像更加智能和动态,但我们经常遇到新的问题。除非指定不同的URL结构并使用服务器技术缓存图片,否则这些输出图片将消耗大量的流量。您如何在下一个用户访问时缓存它们并调用缓存(如果您希望这张图片保持不变)

将代码复制如下:将其置于任何PHP图像生成代码之上:

session_start();

标题(缓存控制:私有,最大年龄= 10800,预检查= 10800 );

标题(杂注:私人);

页眉()。日期(date_rfc822,strtotime(2天))));

在标题(内容类型:图像 )中,添加上面的代码,它将指定当前页面缓存时间(两天),并在下一次访问时使用缓存时间节点。

接下来,确定是否已经有缓存,如果存在,则使用缓存。

案例1:如果浏览器已经缓存在当前页面上,可以直接使用它。

复制代码如下:浏览器会发送一个_server美元{ 'http_if_modified_since} /如果它有一个缓存副本

如果(isset($ _server { 'http_if_modified_since ' })){

如果浏览器有此图像的缓存版本,请发送304

头('last-modified:'。_server { } 'http_if_modified_since美元,真的,304);

出口;

}

场景二:浏览器缓存了当前页面。虽然我们更新了一些图像信息,源图片本身并没有改变,我们希望以前使用缓存,所以我们也使用缓存。

复制代码代码如下:$ img =some_image。png;

如果(isset($ _server { 'http_if_modified_since ' })(strtotime($ _server { 'http_if_modified_since ' })=个($ IMG))){

发送文件的最后一个mod时间

(gmdate头'last-modified:'(想,D M Y H:我:'($,个IMG))。'时间',真的,304);

出口;

}

当然,也有一些特殊的情况需要我们考虑,但是上面的代码基本上可以引导我们的思路。

那么让我们看一个例子。

复制代码代码如下:< PHP

调整图片大小



*图片比例缩放的原则:

* 1,原始图的大小是否小于目标的大小,如果直接使用原始图的宽度

* 2,如果原始图的大小大于目标的大小,则比较原始地图的宽度和高度。

* 3,如:宽度>高度,宽度=目标宽度,高=目标宽度的比率*

* 4,如:高>宽,高=目标高,宽=高比例的目标*原始宽度

**



$;

max_width = 200美元;

max_height = 200美元;



$大小= getimagesize($图像); / /得到图像的大小

宽度= $ { 0 };

高= $大小{ 1 };



x_ratio美元=美元/美元max_width宽度;

y_ratio美元=美元/美元max_height高度;



如果(($宽度max_width美元)(美元高度≤max_height美元))

{

tn_width美元= $宽度;

tn_height美元= $高度;

}

Elseif((($ x_ratio * $高度)< max_height美元)

{

tn_height美元=细胞($ x_ratio * $高度);

tn_width = max_width美元美元;

}

其他的

{

tn_width美元=细胞($ y_ratio * $宽度);

tn_height = max_height美元美元;

}



SRC = imagecreatefromjpeg美元($图像);

美元($ tn_width DST =新建一个真彩色图像,tn_height美元); / /新建一个真彩色图像

imagecopyresampled($ DST,SRC美元,0, 0, 0,0,tn_width美元,tn_height美元美元美元,宽度,高度); / /重采样拷贝部分图像并调整大小

头('content-type:图像/ JPEG);

imagejpeg($ DST,null,100);

销毁一图像($ SRC);

销毁一图像($ DST);

>

希望本文能对大家的PHP程序设计有所帮助。