关于PHP中的图片缓存

本文介绍了PHP在Apache环境下如何设置图片的HTTP缓存,通过修改.htaccess文件实现一周的有效期。当浏览器查看网络请求时,显示304状态码表示图片已缓存。此外,还提及了缓存的基本概念,包括其在服务器和客户端的作用,以及如何通过CDN加速资源加载。对于PHP代码是否需要辅助图片缓存,作者计划进行进一步验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   关于PHP中的图片缓存技术之前一直没有考虑过,结果第一次出去面试的时候就苦逼了,哑口无言呀。。。。

   PHP的图片缓存需要在服务器端做好配置,就拿APACHE环境下来说,开启Apache的headers模块支持后,可以在.htaccess文件中添加如下代码,用于设置图片的HTTP缓存和有效期


<IfModule mod_headers.c> 
<FilesMatch ".(gif|jpg|jpeg|png|ico)$"> 
Header set Cache-Control "max-age=604800" 
</FilesMatch>

  上面的代码设置了网站的图片使用为期一周的HTTP缓存,同样的,你也可以给js或者css文件加上http缓存。


  怎么看你的图片被缓存了呢,使用firebug或者其他网页开发工具查看你的网络即可,看到下图的304提示的就是了,这个表示经过服务器认证(一般是比较ETag)该图片任然有效,继续使用本地缓存。个别游览器在缓存有效期内,不再像服务器发送任何请求,直接使用本地缓存,在HTTP CATCH 中是看不到请求信息的。


request消息告诉缓存器缓存该图片一周或者多少时间,过期后游览器重新将过期的图片存入缓存。清空游览器缓存后,自然就是去服务器重新获取了。

另外游览器也是可以设置为强制不适用缓存,那样每次请求就都是200了


扩展一下关于缓存的基础知识:

缓存位于 服务器之间,客户端之间,根据请求保存输出内容的副本,如html页面,图片,文件,当下一个请求来到时,如果相同的URL,直接使用副本响应访问请求,而不向源服务器再次发送请求。

如果要通过缓存大量的资源来达到提速的话用CDN就好。


图片缓存需要PHP代码辅助吗?过两天验证一下下面的代码

if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
	header('HTTP/1.1 304 Not Modified');
	exit;
}
header("Last-Modified: ".gmdate("D, d M Y H:i:s",filectime($cached))." GMT");
readfile($cached);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值