添加缩略图如何大大降低我的网站速度?
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、内存和驱动器指标。在两种模式下运行时还要检查数据库查询执行计划,以确保您的代码不会进行大量您不期望的数据库调用。这应该告诉你你的瓶颈在哪里。
【讨论】:
以上是关于添加缩略图如何大大降低我的网站速度?的主要内容,如果未能解决你的问题,请参考以下文章