Home » php, 原创

优化timthumb.php

11 02月 2010 Views: 8 Comments Tags:

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/

原创文章如转载,请注明:转载自Xixis Blog [ http://www.xixis.net/ ]
本文链接地址:http://www.xixis.net/archives/optimization-timthumb-php.html

8 Comments »

  • 淬念 said:

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

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

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

  • admin (author) said:

    应该是连接的问题吧,看了你的网站,发现使用的是绝对连接
    “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下测试是好用的。
    另外看一下本地目录能否生成,缓存图片,不能生成的话,估计就是这个问题。如果可以生成,就考虑浏览器配置问题吧。

  • Dianso said:

    发现很多图片主题都有这个文件

  • 很困 said:

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

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

  • admin (author) said:

    没见过,查看一下你的文档是否是utf8格式,27%及20%应该是一些标点符号,仔细检查你的代码,使得src与/wp-content之间没有标点及空格,结尾同样道理。我的链接格式如下:

    http://www.xixis.net/wp-content/themes/arthemiamin/scripts/timthumb.php?src=/wp-content/uploads/pic/xunlei.jpg&w=100&h=65&zc=1&q=100

  • 小小 said:

    怎么把图片的动态地址改为静态地址

  • admin (author) said:

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

  • hellohexiang said:

    请问怎么把绝对地址改为相对地址啊?
    我的地址是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
    显示路径错误 我应该怎么修改 在哪个地方修改 希望得到博主指点谢谢

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.