【问题标题】:How to improve efficiency on a website with frequent live updates如何通过频繁的实时更新来提高网站的效率
【发布时间】:2015-12-09 13:28:24
【问题描述】:

我正在制作一个网站,让用户可以直接从首页发帖。同样在首页上,我对发布的问题进行了实时更新。该实时提要中的每个问题都有自己的小容器,其中包含帖子的标题和其他一些详细信息。当用户点击帖子时,(引导)模式打开。在那里你可以看到帖子的标题、帖子的详细信息和实时评论提要。首页的帖子提要和每个帖子的评论提要每 15 秒更新一次(评论提要在其模式打开时开始更新,当任何模式打开时,首页上的帖子提要停止更新)。所有“实时”功能都通过 jQuery/Ajax 工作。我注意到的是,即使在我的本地服务器上,这也需要一些明显的时间来加载。我的数据库在 MySQL 中,我做了几个(大约 15 个)测试帖子,并在其中添加了 cmets。

post feed 的代码基本上是:

function updatePosts({
$("#postContainer").load('post_pull.php');
}
setInterval('updatePosts()', 15000);

而 php 文件只返回 div 中的所有帖子,以及带有模式和一些脚本的帖子的详细信息。

每个帖子的评论提要都非常相似,只是它会拉取具有打开模式的“父 ID”的 cmets。

所以我的问题是:进行实时更新的最有效方式是什么,因为如果现在加载时间很明显,在本地服务器上并且有少量帖子,那么它在有人的真实服务器上将无法使用不断发帖。

【问题讨论】:

  • noticeable time to load 有多长?它有多个方面...服务器处理时间、传输时间和渲染时间
  • 如何区分不同的方面?加载时间约为 2 秒在首页提要
  • 是在初始页面加载之后吗? 2 秒对于大多数 ajax 来说是很长的时间
  • 我在 document.ready() 上运行 updatePosts() 函数,当页面准备好和加载内容时,页面会打印一条控制台消息。在这 2 条消息之间,间隔不到 2 秒。
  • 检查开发工具网络中的实际请求。如果请求实际上花费了那么长时间,服务器可能会效率低下

标签: php jquery ajax optimization live


【解决方案1】:

当您需要 updatePosts() 时,告诉服务器您当前显示的帖子的最后一个 ID,以便服务器只能发送您的页面没有的帖子。

updatePosts(lastID);

function updatePosts(lastid) {
 $.get( "post_pull.php?lastid=" + lastid, function() {
   $("#postContainer").prepend(data); // or append    
 });
}

因此服务器将只返回新帖子并将它们附加到列表顶部。

【讨论】:

  • 还需要与 load() 不同的 ajax 方法。答案不是很完整
  • 是的……这很有意义。从来没想过。一定会实施的。谢谢
  • 那应该用什么方法代替load呢?
  • load() 将替换所有内容,如果您只想添加新内容,则需要使用 $.get 之类的东西并自己处理响应
  • 现在感觉有点愚蠢...当用户发布问题时我使用 $.post 然后将其附加到提要的顶部,但我从未想过为帖子提要这样做。感谢您指出这一点。
猜你喜欢
  • 2015-12-06
  • 2017-03-05
  • 2011-05-04
  • 2017-06-17
  • 2021-10-24
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多