0

当我添加 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']
    ));
4

1 回答 1

0

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

于 2013-05-20T20:19:07.617 回答