【发布时间】:2013-12-14 13:41:04
【问题描述】:
我使用 Ajax 使用 Twitter Bootstrap 选项卡在我的 div 中加载另一个页面的内容。 我意识到 Ajax 加载请求的时间太长,所以我决定清理代码并只保留“session_start ()”。 而问题正是'session_start()'。
用于测量请求时间的微时间。
以下是测试结果:
PHP WITH session_start() 加载了 AJAX - 29.041733980179 毫秒
没有 AJAX 加载 session_start() 的 PHP - 0.00010895729064941 毫秒
没有 session_start() 的 PHP 加载了 AJAX - 1.6927719116211 毫秒
这是我的 Javascript 代码:
$(function() {
$("#MainTabs").tab();
$("#MainTabs").bind("show", function(e) {
var contentID = $(e.target).attr("data-target");
var contentURL = $(e.target).attr("href");
if (typeof(contentURL) != 'undefined')
$(contentID).html('<img src="<?php echo IMG_DIR; ?>loading/loading-large.gif" width="64" />').load(contentURL, function(){
$("#MainTabs").tab();
});
else
$(contentID).tab('show');
});
$('#MainTabs a:first').tab("show");
});
这是我的 PHP 代码:
<?php
$start = microtime(TRUE); // Start counting
set_time_limit(0);
// session_start();
$temp = microtime(TRUE) - $start;
echo $temp;
exit;
有人知道发生了什么吗?
【问题讨论】:
-
在 AJAX/常规请求中发送的标头有什么不同吗?
session_start将启动会话,它正在加载一个非常大的数据集吗? -
标题相同。如果我直接在浏览器中输入带有 url 的页面,则相同的会话加载速度很快。已经使用 ajax,她表现得很慢。
-
session_start 不是线程安全的,因此它会阻止具有相同会话 ID 的多个请求。因此,如果您的页面同时发出多个请求并且所有请求都使用 session_start 加载页面,那么您将排队。这可能是你的问题吗?
-
请求的发出方式(对于服务器)应该没有区别。您可以记录所有 HTTP 标头吗? @Rob 这是个好建议
-
Ajax call VERY SLOW with PHP 的可能重复项
标签: javascript php jquery ajax twitter-bootstrap