优化timthumb.php


TimThumb是一个简洁高效的创建图片缩略图的程序。它功能非常强大,并且制定性很强。通过对多个参数的控制,你可以灵活地设置缩略图片的输出样式。

然而,有时候具体应用时,会产生一些性能问题。由于它的调用方式

<IMG alt="" src="/scripts/timthumb.php?src=/images/whatever.jpg&h=150&w=150&zc=1">

服务器可能不会自动对图片进行压缩,也不会自动添加图片的客户端缓存过期时间。下面我们来看一下如何解决这些问题。

 

开启cache

TimThumb是有cache功能的,如果你的图片没有cached,请查看timthumb.php文件第45行左右

check_cache....

移除前面的#或//符号,这将使服务器响应时间加快5倍(100ms降低到20ms)。

修改cache目录

最好将cache目录设为网站上传目录(upload目录)(有人如此建议)。第35行:

$cache_dir = ‘./cache’;

计算timthumb.php文件所在目录深度,.将cache_dir设为../… /uploads/

设置最大压缩比

PNG图片的最后一个参数不是质量级别而是压缩级别。我们可以单独修改这个参数达到最大压缩比。

找到timthumb.php文件第174行左右

$quality = floor($quality * 0.09);

在下面添加:

$quality = 9;

加快图片的载入速度

你可以把以下规则添加进你的.htaccess文件中,可加速图片载入速度:

RewriteEngine on

RewriteRule .* – [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]

RewriteRule .* – [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

设置客户端缓存

将第317行左右的最大有效期设为:

header("Cache-Control: max-age=315360000,public");

下两行左右位置,设为:

header("Expires: " . gmdate("D, d M Y H:i:s", time() + 315360000) . "GMT");

 

设置静态地址

将图片的动态地址改为静态地址也会加快服务器的响应速度。

 

参考:

http://www.speedingupwebsite.com/2010/02/11/hacking-timthumb-php-all-the-best-practices/

关于timthumb.php更多用法:

http://code.google.com/p/timthumb/

“优化timthumb.php”的9个回复

  1. 我现在面对的问题是,在主机空间上,它表现很正常,

    可是在我的windows xp + xampp的localhost上,无法显示缩略图。

    不知道博主能否给些提示或者线索?谢谢

  2. 应该是连接的问题吧,看了你的网站,发现使用的是绝对连接
    “timthumb.php?src=http://www.dennispot.com/wp-content/uploads/2010/04/resignation-letter.jpg”
    我一直用相对连接,如:src=”/scripts/timthumb.php?src=/images/whatever.jpg&h=150&w=150&zc=1″ windows下测试是好用的。
    另外看一下本地目录能否生成,缓存图片,不能生成的话,估计就是这个问题。如果可以生成,就考虑浏览器配置问题吧。

  3. 000webhsot用TimThumb生成缩略图的地址的时候会变成

    timthumb.php?src=src27%/wp-content/uploads/2010/04/resignation-letter.jpg%27%20alt=
    这样的形式
    请问有什么解决的方法吗?

  4. 直接使用生成的缩略图的url即可,在缓存目录里,也可以将其移动到别的目录引用。

  5. 请问怎么把绝对地址改为相对地址啊?
    我的地址是http://www.baby.ddisk.com/wp-content/themes/DailyNotes/timthumb.php?src=http://www.baby.ddisk.com/wp-content/uploads/2011/04/123.jpg&h=200&w=200&zc=1
    显示路径错误 我应该怎么修改 在哪个地方修改 希望得到博主指点谢谢

  6. 请问
    设置静态地址
    将图片的动态地址改为静态地址也会加快服务器的响应速度。
    这个具体方法如何实现

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据