我为一位朋友创建了一个网站。因为他希望音乐播放器能够通过页面加载继续播放音乐,所以我决定通过ajax(由jQuery提供便利)将内容加载到页面中。它工作的很好,当没有javascript时它会很好地回退,并且后退/前进按钮工作得很好,但在服务器上速度非常慢。为什么我的Ajax请求比一般的浏览器请求慢得多?
有几点:
初始页面加载是相当快的。 Chrome开发者控制台告诉我,“index.php”在大约2.5秒内加载。我已经设置了查询字符串参数来指定加载哪个页面,并且这个时间框架对于他们来说大致是准确的。对于主页,加载了8.4KB的数据。
当我通过ajax请求加载内容时,无论下载的数据大小如何,大约需要20秒。以这种方式加载的最小数据量大约为500个字节。这里显然存在不匹配。
因此,Chrome告诉我,绝大多数时间都是“等待”,我认为服务器正在处理请求。所以,这只能意味着,我的代码要么花了很长时间,要么就是服务器上出现了一些棘手的问题。我不认为这是我的代码,因为它是相当小:
$file = "";
if (isset($_GET['page'])) {
$file = $_GET['page'];
} else if (isset($_POST['page'])) {
$file = $_POST['page'];
} else {
$file = "home";
}
$file = 'content/' . $file . '.php';
if (file_exists($file)) {
include_once($file);
} else {
include_once('content/404.php');
}
这是一个content_loader.php文件,我的JavaScript(在这种情况下)发送GET请求与“页”参数一起。 HTML标记被返回并放入页面上的DIV中。
我正在使用jQuery .get()速记功能,所以我不认为我可能会搞砸那里的任何东西,而且我相信它不是Javascript问题,因为延迟是在等待来自服务器的数据。再次,即使数据非常小,大约需要20秒。
我目前认为这是服务器的问题,但我不明白为什么通过JavaScript做出的请求比通过浏览器传统方式做出的请求慢得多。作为补充说明,一些内容页面连接到MySQL数据库,但有些则不。它似乎并不关乎页面处理的内容或它包含的数据量,它需要20秒左右的时间。
我很茫然......有谁知道任何可能解释这一点的东西?另外,我很抱歉,如果这不是这样一个问题的正确位置,其他场所也不是特别适合这个问题。
+0
基于我过去处理的类似问题,我立即想到了几件事情。首先可能是反向DNS查询问题。在反向DNS查找失败后,它可能会超时。其他问题:你在使用MySQL吗?你正在加载一个基于文件的会话吗? –
+0
建立了一个MySQL连接,尽管一些内容页面根本不使用它。另外,我根本不使用会话。我想到了尝试和执行我的PHP的时间,所以我非常简单地在发生任何事情之前(包括与数据库的连接)回复出时间(),并且在所有事情完成之前,在它被发送之前回到客户端。输出是相同的,所以我认为这意味着我的脚本运行时间不到一秒。你能详细谈谈反向DNS问题吗?我不确定你在做什么。 –
+0
请参阅下面的答案。我刚加了一点解释。 –