如何诊断最初加载缓慢的网站?也就是说,它在10秒内没有响应,然后在此之后快速加载。
您可以在此处查看加载图表:http://www.webpagetest.org/result/130128_XV_GVN/3/details/
我知道“某些东西”正在减缓它,但我不知道是什么。有没有办法知道造成延误的原因是什么?
编辑:以下是Joomla调试模式的值:
Application 0.013 seconds (+0.013); 1.33 MB (+1.327) - afterLoad
Application 0.783 seconds (+0.770); 9.53 MB (+8.199) - afterInitialise
Application 0.952 seconds (+0.169); 11.00 MB (+1.473) - afterRoute
Application 1.164 seconds (+0.212); 12.76 MB (+1.758) - afterDispatch
Application 2.453 seconds (+1.289); 19.04 MB (+6.287) - beforeRenderModule mod_roknavmenu ()
Application 2.858 seconds (+0.405); 20.91 MB (+1.865) - afterRenderModule mod_roknavmenu ()
Application 2.977 seconds (+0.119); 20.98 MB (+0.075) - beforeRenderModule mod_login (Member Access)
Application 3.012 seconds (+0.035); 21.09 MB (+0.102) - afterRenderModule mod_login (Member Access)
Application 3.019 seconds (+0.008); 21.09 MB (-0.000) - beforeRenderModule mod_hot_joomla_carousel (Front Page Carousel)
Application 3.033 seconds (+0.014); 21.13 MB (+0.040) - afterRenderModule mod_hot_joomla_carousel (Front Page Carousel)
Application 3.057 seconds (+0.024); 21.12 MB (-0.010) - beforeRenderModule mod_rokgallery (FP RokGallery)
Application 3.793 seconds (+0.736); 29.68 MB (+8.570) - afterRenderModule mod_rokgallery (FP RokGallery)
Application 3.847 seconds (+0.053); 29.64 MB (-0.048) - afterRender
答案 0 :(得分:2)
尝试禁用Rok模块和插件。检查是否有任何改变。如果您正在使用memcached缓存尝试禁用它或最终更改为文件。即使你有慢磁盘文件缓存也可以改善网站。 Memcached有时会给出与预期相反的结果。
还要尝试查看您的问题是否与您正在使用的CloudFlare服务相关。只需创建一个子域直接进入后端托管,看看响应时间是否不同。
如果没有任何帮助,并且您没有在Joomla调试输出中看到问题,那么是时候进行服务器端调试了。我假设你正在使用linux托管。了解dns解析是否适用于您的服务器。只需使用ping,dig或host来查询任何域名的IP地址。如果您看到暂停名称解析,请先修复解析器。
如果您使用CGI运行php,那么您可以尝试使用stracing php进程并查看它是否会暂停某些内容,例如。等待连接到db可能吗? 其他方法是使用xdebug php模块并进行函数跟踪。你可以使用xdebug运行php作为CGI或服务器模块。
答案 1 :(得分:0)
我会把它归结为主机和/或繁重的模板+正在运行的其他扩展程序。由于JavaScript和CSS文件的数量和大小,我总是发现Rockettheme模板及其框架非常繁重。
您可以做的是,备份网站并在WampServer等本地主机上运行,以查看加载速度是否有任何差异。
如果您看到网站运行速度更快,您可能需要考虑使用其他主机。如果没有太大差异,那么我认为可能需要一个不同的模板。
希望这有帮助
答案 2 :(得分:0)
我同意上述评论基于框架的任何模板通常都很慢,看看这是否是问题,只需将beez菜单分配给主页,看看它有多大差异。
通常时间如此之高意味着您的缓存未正确配置,和/或主页上未优化的许多模块和/或大量文章。所有这些都有解决方案,但请做一些测试,以便我们确定主要问题。
最好是使用非实时副本,以便在不中断当前网站的情况下使用它。
这只是一些基本的诊断,一旦发回,我们可以更进一步。
答案 3 :(得分:-1)
您的问题听起来像是一个TTFB(第一个字节的时间)问题,可能与繁重的数据库查询,主机性能下降,页面渲染速度过大直接相关,这些都会导致服务器的响应时间过长。
我同意上述评论,首先检查本地安装的服务器上的性能(我在这里使用WAMP服务器)。您还可以通过添加组件和插件呈现中的其他信息来深入了解joomla框架并增强调试功能。
对于调试组件,您需要编辑文件库/ joomla / application / component / helper.php并替换
$contents = self::executeComponent($path);
与
if (constant('JDEBUG')) {
JProfiler::getInstance('Application')->mark('beforeExecuteComponent ' . $option.' ('.$task.')');
}
$contents = self::executeComponent($path);
if (constant('JDEBUG')) {
JProfiler::getInstance('Application')->mark('afterExecuteComponent ' . $option.' ('.$task.')');
}
对于插件编辑库/ joomla / event / dispacher.php并替换
if (is_object($this->_observers[$key]))
{
$args['event'] = $event;
$value = $this->_observers[$key]->update($args);
}
// Fire the event for a function based observer.
elseif (is_array($this->_observers[$key]))
{
$value = call_user_func_array($this->_observers[$key]['handler'], $args);
}
用这个:
if (constant('JDEBUG'))
{
$pluginName = '';
if (is_object($this->_observers[$key])) {
$pluginName = get_class($this->_observers[$key]);
}
JProfiler::getInstance('Application')->mark('Execute Plugin ' . $pluginName.'::'.$event.' - START');
}
// Fire the event for an object based observer.
if (is_object($this->_observers[$key]))
{
$args['event'] = $event;
$value = $this->_observers[$key]->update($args);
}
// Fire the event for a function based observer.
elseif (is_array($this->_observers[$key]))
{
$value = call_user_func_array($this->_observers[$key]['handler'], $args);
}
if (constant('JDEBUG'))
{
JProfiler::getInstance('Application')->mark('Execute Plugin ' . $pluginName.'::'.$event.' - END');
}
现在,您可以检查插件,模块的加载顺序以及每次加载所需的时间。