当我添加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']
));
答案 0 :(得分:0)
很多事情都可以在这里发生。最有可能的是,我会说,当你拥有那么多不同的图像和那么多用户时,它就是硬盘抖动的问题。如果您的数据库和映像位于同一驱动器上,则在数据库搜索之上每秒请求数千次不同的文件系统文件会导致一些延迟。特别是如果图像位于碎片硬盘上。实际上,您需要运行一些性能工具,如Perfmon,并在使用图像运行服务器时观察cpu,内存和驱动器指标。在两种模式下运行时还要检查数据库查询执行计划,以确保您的代码没有进行大量数据库调用,而这些调用并不是您所期望的。这应该告诉你瓶颈在哪里。