当前位置: 首页 > 面试题库 >

将更改推送到网页而不刷新

尚恩
2023-03-14
问题内容

我知道我们可以通过定期轮询更改来做到这一点。这可以通过AJAX(例如jQuery.load()与一起使用setInterval())来实现。

但是我想知道还有其他方法可以做到这一点吗?其他成本更低或更有效的方法?出色的聊天客户端遵循什么逻辑?一旦您开始键入,另一端就会知道您正在键入。

我们在stackoverflow上遵循什么机制来更新upvote计数或显示已进行编辑等操作,而无需刷新页面?


问题答案:

当要使客户端和服务器保持实时(近)实时同步时,有三件事需要立即想到:

  • 长轮询 :您已经提到了这一点,在客户端上设置了一个计时器,该计时器每10秒钟左右触发一次新的AJAX请求。这可能是3种技术中最“低级的”,也是效率最低的。但是它也是最兼容的(这意味着它将在所有浏览器中都可以使用,即使是像IE6 / 7之类的东西)

  • WebSockets :sdespont已经在评论中提到了这一点。尽管WebSockets比长轮询效率更高(因为它可以无限期地保持客户端与服务器之间的双向通信),但如果您要做的只是从服务器获取定期更新,则它可能是一个非常笨拙的解决方案。Firefox和Chrome的所有版本都支持它,IE在IE10中添加了支持

  • 服务器发送的事件 :该 事件 似乎不太流行(或不太为人所知)。它允许服务器将更改发送到客户端(与客户端从服务器请求更改相反,长轮询就是这种情况)。这也是一种单向通信(服务器->客户端),并且在请求完成后,连接将关闭(与WebSockets保持两向通信保持打开状态相反)。再一次,并非所有的浏览器都支持它,并且根本不支持IE。

这也是一篇很好的文章,它解释了更现代的客户端-
服务器通信方式之间的区别。而且,如果您想了解有关服务器发送的事件的更多信息,这是一个很好的记录



 类似资料:
  • 问题内容: 这有可能吗? 这是问题所在: 我有一个使用此URL的关键字搜索(搜索后):http:// localhost / thi / search?keyword = key 然后我有一个使用AjaxForm插件(jquery)的滑块搜索… 当我执行滑块搜索时,显然我仍然会在关键字搜索URL中(因为请求是通过ajax发送的) 有没有办法将当前网址更改为类似http:// localhost /

  • 本文向大家介绍Git 将本地更改推送到SVN,包括了Git 将本地更改推送到SVN的使用技巧和注意事项,需要的朋友参考一下 示例 命令 将为您的每个本地git提交创建SVN修订版。与SVN一样,您的本地git历史记录必须与SVN信息库中的最新更改同步,因此,如果命令失败,请尝试先执行git svn rebase。

  • 我有一个html页面和一个带有Thymeleaf模板引擎的java应用程序,我正在寻找一个教程,向服务器发出请求,并根据响应仅呈现页面的一部分。 此时,我有一些按钮具有相同页面的链接,带有不同的参数,我的div是基于属性文章列表创建的(我从服务器接收基于button_id) 超文本标记语言: Java: 我希望我的按钮处理我的索引控制器,只更改文章的div,而不是刷新整个页面。 我尝试过使用aja

  • 问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A

  • 问题内容: Jenkins在本地主机上运行。我的存储库在GitHub中。我可以 选择“将更改推送到GitHub时构建”。 当我单击“立即构建”时,构建成功完成,那里没有问题。但是, 当将代码提交到我的存储库时,不会自动构建。我可以 从我的系统访问GitHub,因为该存储库是公共的,我相信甚至 Jenkins也应该能够检测到它。我知道有一个轮询选项,但是我 希望Jenkins在存储库中检测到更改时进

  • 我有剑道网格和自定义搜索表单。在我的搜索表单中,我有提交和重置按钮。如果有搜索内容,那么网格将使用搜索的过滤器数据源进行更新,然后单击“重置”,网格将使用新数据源进行刷新。如果我将pagesize值10更改为20并单击“重置网格”,我的问题是没有重置。。然后网格页面大小变为20到10。。。如果单击“下一页”,则第二页的页面大小保持为20,第一页的页面大小保持为10 我怎么解决这个问题?任何想法?我