关于PHP中的图片缓存

来源:互联网 发布:微商城cms源码下载 编辑:程序博客网 时间:2024/05/05 15:11

   关于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);


0 0
原创粉丝点击