我有一个 PHP 代码,它从数据库中提取文本,并将其作为链接显示在 div 中。我每 3000 毫秒刷新一次 DIV,刷新本身时 CPU 使用率仅高出几个百分点。经过 20-25 分钟的不断刷新后,当我单击其中一个链接时,打开该页面大约需要 20 秒,同时浏览器选项卡冻结。发生更多刷新 - 打开链接需要更多时间,以及打开更多链接时(如果打开 10-15 个链接,打开下一页的速度会慢到 10-12 秒)。当浏览器尝试打开链接时,1 个处理器线程已完全加载。这是代码(简化):
<div id="map1"></div>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<div id="map1">
<?PHP
if (isset($_GET['m'])) {
$selectback = "SELECT parentid FROM MAP_LINK WHERE sysid = " . $_GET['m'];
................
$rowb = ibase_fetch_row($query);
echo "<h6><a href=\"#\" id=\"back" . $rowb[0] . "\">BACK</a></h6><h4>
<script>
$('a#back" . $rowb[0] . "').click(function() {
clearInterval(auto_refresh);
$(\"#map1\").load(\"test2.php?m=" . $rowb[0] . "\");
auto_refresh = setInterval(function (){
$(\"#map1\").load(\"test2.php?m=" . $rowb[0] . "\");}, 3000);
});
</script>";
$select = "SELECT sysid FROM MAP_LINK WHERE parentid = " . $_GET['m'];
.........................................
$x = 0;
while ($x < $total_rows) {
$x++;
$row = ibase_fetch_row($query);
echo "<br><a href=\"#\" id=\"" . $row[0] . "\">Link # " . $row[0] . "</a>
<script>
$('a#" . $row[0] . "').click(function() {
clearInterval(auto_refresh);
$(\"#map1\").load(\"test2.php?m=" . $row[0] . "\");
auto_refresh = setInterval(function (){
$(\"#map1\").load(\"test2.php?m=" . $row[0] . "\");}, 3000);
});
</script>";
}
} else {
echo "<script>
$(document).ready(function(){
$(\"#map1\").load('test2.php?m=56');
auto_refresh = setInterval(function (){
$(\"#map1\").load(\"test2.php?m=56\");}, 3000);
});</script>";
}
?>
这与我拥有的代码大致相同。该数据库由 4 个从中提取数据的表组成。前 6-7 次点击会立即打开下一页,没有延迟,第 10 次点击后延迟开始,并且随着每次额外点击或刷新而变大。
我的问题是:我怎样才能让它立即或至少更快地打开?代码中有错误。它可以工作,但它会大量使用 CPU,而且速度越来越慢,无法在页面上导航。
谢谢!