jquery边栏刷新太多了?

时间:2011-11-03 21:10:05

标签: jquery

我的网站上有2个侧边栏,由于网站的性质(游戏脚本/网站),这些部分需要经常刷新 - 每10秒钟左右。

在左侧边栏上有一个MAIL链接和一个ALERTS链接,如果你有新内容,这两个链接都会闪烁。

在右侧边栏,它有你的统计数据,健康状况等。

为了做到这一点,我把一些jquery事情搞得一团糟。例如,对于左侧边栏,我将此代码放在主页的head标记中。

<script>
 $(document).ready(function() {
   $("#leftbar").load("leftbar.php");
   var refreshId = setInterval(function() {
      $("#leftbar").load('leftbar.php?randval='+ Math.random());
      }, 9000);
   $.ajaxSetup({ cache: false });
   });
</script>

然后在侧边栏中我有一个<div id="leftbar"></div>标签,每隔10秒刷新一次。我对右侧边栏也有同样的看法。

我的问题是,在我的leftbar.php中,它的设置就像普通页面一样。在顶部它连接到数据库,查询表,然后输出html取决于是否新的内容。然后再次关闭数据库连接。

这是怎么做到的? 每10秒钟打开和关闭数据库连接似乎太过分了。

注意:我对javascript / jquery一无所知

4 个答案:

答案 0 :(得分:2)

是的,这很正常。

对于某些ajax自动完成插件,每次击键都会进行数据库连接,这可能每秒发生几次。连接在mysql和大多数数据库中并不“昂贵”。我不得不承认,当我几年前从甲骨文发现时,我也感到很惊讶。

点是,ajax请求是一个完整的http请求,带有header和all。您可以为用户会话保持连接打开,但它的成本几乎与关闭和打开新会话的成本相当。并且一些杂散连接可以累积并污染数据库。

答案 1 :(得分:0)

这通常是如何完成的,尽管通常你不必每次都手动关闭连接。通常,当它完成请求数据时,它足够聪明地打开和关闭它自己。 See these docs for mysql_close获取更多信息/更好的解释。

答案 2 :(得分:0)

嗯...好问题,我很好奇是否有最好的做法。

在我看来,你应该阅读一些关于noSQL技术的文章:)

答案 3 :(得分:0)

嗯,你为jQuery / JavaScript介绍了很多东西! :)

看起来您的示例应该满足您的需求。数据库连接不应该担心,因为你可能使用Apache?在这种情况下,Apache可以处理的任何事情(每秒几千个请求)应该没问题。

您还可以查看push technology (long polling)以告知您何时有更新,而不是进行常规投票。当然,这会让阿帕克屈服。

因此,有一些很棒的库可以将这类工作卸载到nodejsape,这可以通过轮询和非常小的脚印进行some sophisticated things:)