添加缩略图如何大大降低我的网站速度?

Posted

技术标签:

【中文标题】添加缩略图如何大大降低我的网站速度?【英文标题】:How does adding thumbnails slow down my website a lot? 【发布时间】:2013-05-20 20:08:23 【问题描述】:

当我添加 15 个缩略图(每个 4kb-5kb)时,我的网站往往会变慢很多,甚至在 2.5k 在线用户上崩溃,如果没有它们,它可能需要多达 4.5k-5k。

我制作了一个脚本,该脚本将在每次上传图片时从动画 gif 制作缩略图,并将该图片的路径存储在数据库中。在添加缩略图之前打开的每个页面上,我的网站都会从数据库 url、标题、id 和路径传递到 gif 图像,唯一改变的是获取 15 个标题的缩略图路径。

我的网站是http://www.smesniposteri.com/,在右边你可以看到我正在谈论的 15 个标题。以下是用户每次访问时打开带有和不带有缩略图的页面的代码。

没有:

$sql = "SELECT id, url, hits, subject FROM ".DB_PREFIX."items WHERE `id` != '".$id."' AND `type` = '".$cat."' ORDER BY `timestamp` DESC LIMIT 0, 15;


$result = $db->query($sql);
$template->assign_vars('others_row', array(
'URL'   => $url."/".create_item_url($row['id'], $row['subject'], $cat),
'HITS'  => number_format($row['hits'], 0, ',', '.'),
'SUBJECT'   => $row['subject']
    ));

带有缩略图:

$sql = "SELECT id, url, hits, subject, thumb_url FROM ".DB_PREFIX."items WHERE `id` !=   '".$id."' AND `type` = '".$cat."' ORDER BY `timestamp` DESC LIMIT 0, 15;


$result = $db->query($sql);
$template->assign_vars('others_row', array(
'URL'   => $url."/".create_item_url($row['id'], $row['subject'], $cat),
'HITS'  => number_format($row['hits'], 0, ',', '.'),
'THUMBNAIL'   => $row['thumb_url'],
'SUBJECT'   => $row['subject']
    ));

【问题讨论】:

'THUMBNAIL' => $row['thumb_url'] 显然从数据库中进行了 15 次查找。尝试在原始查询中包含缩略图,而不是添加查找。 这是其他行的原始查询 【参考方案1】:

这里可能会发生很多事情。最有可能的是,我会说,当您拥有如此多不同的图像和如此多的用户时,硬盘驱动器抖动是一个问题。如果您的数据库和图像在同一个驱动器上,那么在数据库搜索之上每秒数千次请求 15 个不同的文件系统文件会导致一些延迟。特别是如果图像位于碎片硬盘驱动器上。确实,您需要运行一些性能工具,例如 Perfmon,并在使用和不使用图像运行服务器时观察 cpu、内存和驱动器指标。在两种模式下运行时还要检查数据库查询执行计划,以确保您的代码不会进行大量您不期望的数据库调用。这应该告诉你你的瓶颈在哪里。

【讨论】:

以上是关于添加缩略图如何大大降低我的网站速度?的主要内容,如果未能解决你的问题,请参考以下文章

Unity Prefab 缩略图全黑无法预览

LinkedIn 分享文章缩略图

PHP-生成缩略图和添加水印图-学习笔记

PHP-生成缩略图和添加水印图-学习笔记

我如何告诉 Reddit 忽略我的缩略图徽标?

带有简单缩略图的衬垫合身