文章目录

由于最近需要解决wordpress里的缩略图的问题找到了TimThumb这个库,发现其实现思路很不错,可以借鉴一下。以后在写程序的时候如果需要使用到缩略图一般会在后台上传的时候直接生成相应的缩略图,然后在前台引用。但有时缩略图规格比较多,有些图片又是外链的,不利于缩略图的生成。而TimThumb则是在需要显示缩略图的地方通过:

timthumb.php?src=/wp-content/uploads/2012/07/dd3.jpg&w=525&h=500

这种方式传递图片地址和相关缩略图信息给timthumb.php,然后判断是本地文件还是远程文件,是本地的直接获取相关图片信息,再根据参数进行生成缩略图,并将缩略缓存到cache目录下,最后返回给浏览器。远程的图片文件就是多了一步下载图片到本地的步骤。

这种方式的好处是在需要的时候才生成缩略图,缩略图的大小可以直接在html代码里面指定,易用性较高。但由于这种方式在页面访问时会通过php即时生成或返回缩略图会产生一定的访问开销,对php的io能力有要求。好在图片是可以设定客户端缓存的,只要访问过一次,下次再继续访问时就不会再去服务器下载这个图片了。

至于缓存到cache里面的缩略图文件有一个过期时间,还没弄明白里面的清理机制。

我想如果以后在开发程序的时候可以考虑编写一个这样的模块

  1. 通过在模板里面写函数调用,生成缩略图后返回真实的缩略图地址(比如:createThumb())
  2. 如果已经存在缩略图则直接返回缩略图地址
  3. 可调用函数删除指定的缩略图(比如:deleteThumb())
  4. 可在函数中指定缩略图的存放方式(比如:存放到mfs,mogilefs,girdfs上)
  5. 缩略图存放到不同的服务器上实现分流
  6. 在数据库中将原图跟缩略图进行关联,删除原图后自动删除相关的缩略图
文章目录