- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为这个问题搜寻了几个小时,但没有找到任何解决方案。
我目前正在基于this构建的Meteor应用程序上工作。
现在的情况是,在打开网站并将所有资产加载到浏览器中之后,浏览器会不断对服务器进行递归xhr调用。这些调用以25秒的常规间隔进行。
这可以在浏览器控制台的“网络”选项卡中看到。请参阅图像中最后一行的待处理请求。
我不知道它的起源,以及为什么即使用户空闲时也会自动调用它。
现在的问题是,如何禁用这些自动请求?我想手动调用请求,即选择菜单项时等。
任何帮助将被申请。
[更新]
针对Jan Dvorak的评论:
当我在搜索框中键入“ e”时,将显示名称以字母“ e”开头的事件列表。
该请求包含所有有效参数和有效负载,如下所示:
["{\"msg\":\"sub\",\"id\":\"8ef5e419-c422-429a-907e-38b6e669a493\",\"name\":\"event_Coll_Search_by_PromoterName\",\"params\":[\"e\"]}"]
a["{\"msg\":\"data\",\"subs\":[\"8ef5e419-c422-429a-907e-38b6e669a493\"]}"]
最佳答案
流星有一个功能叫做
实时页面更新。
只需编写您的模板。当数据库中的数据更改时,它们会自动更新。不再需要编写任何样板重绘代码。支持任何模板语言。
为了支持此功能,Meteor需要在幕后进行一些服务器-客户端通信。
传统上,HTTP是用来获取无效数据的。客户端告诉服务器它需要一些东西,并且得到了东西。服务器无法告诉客户端它需要什么。后来,变得需要将一些数据推送到客户端。出现了几种选择:
轮询:
客户端定期向服务器发出请求。服务器以新数据响应或立即说“无数据”。它易于实现且不占用太多资源。但是,它并不完全是实时的。它可以用于新闻行情,但对于聊天应用程序却不是很好。
如果增加轮询频率,则可以提高更新速率,但是资源使用量随轮询频率而不是数据传输速率而增加。 HTTP请求并不便宜。每秒来自多个客户端的一个请求确实会严重损害服务器。
挂起请求:
客户端向服务器发出请求。如果服务器有数据,它将发送它们。如果服务器没有数据,它只有在有数据时才响应。所做的更改会立即被获取,不需要时不会传输任何数据。但是,它确实有一些缺点:
如果Web代理看到服务器处于静默状态,它将最终切断连接。这意味着即使没有要发送的数据,服务器仍需要发送保持活动响应,以使代理(和Web浏览器)满意。
挂起的请求不会占用(很多)带宽,但是会占用内存。如今的服务器可以处理多个并发的TCP连接,因此与以前相比,这不再是一个问题。需要考虑的是与保留这些请求的线程相关联的内存量,尤其是当连接绑定到为它们服务的特定线程时。
浏览器对每个域的总并发请求数量有严格的限制。再说一次,现在这不再像以前那样令人担忧。因此,每个会话仅具有一个挂起请求似乎是一个好主意。
管理挂起的请求有点麻烦,因为您必须在每次响应后都提出一个新请求。 TCP握手也需要一些时间,但是我们可以忍受300毫秒(最坏的情况)的不应期。
分块响应:
客户端使用与数据流相对应的源创建隐藏的iFrame。服务器立即以HTTP响应标头进行响应,并使连接保持打开状态。要发送消息,服务器将其包装在一对<script></script>
标记中,当浏览器收到结束标记时,该标记就会由浏览器执行。好处是没有重新打开连接,但每条消息都有更多开销。此外,这需要响应调用的全局范围内的回调。
另外,由于跨域iFrame通信会带来其自身的问题,因此不能与跨域请求一起使用。信任服务器的需求在这里也是一个挑战。
Web套接字:
它们以普通的HTTP连接开始,但稍后实际上并没有遵循HTTP协议。从编程的角度来看,事情尽可能简单。该API在客户端是经典的打开/回调样式,服务器仅将消息推送到打开的套接字中。无需在每个消息后重新打开任何内容。
仍然需要保持开放的连接,但这实际上并不是浏览器限制的问题。浏览器知道该连接将打开一段时间,因此不需要对普通请求使用相同的限制。
这些似乎是理想的解决方案,但是存在一个主要问题:IE <10不知道它们。只要IE8仍然存在,就不能依赖Web套接字。此外,本地Android浏览器和Opera mini也已退出(ref.)。
不过,一旦IE8(和IE9)最终死亡,Web套接字似乎仍然是解决之道。
您看到的是具有25秒超时的挂起请求,这些请求用于实现实时更新功能。正如我已经说过的那样,使用了保持活动消息(“ h”),以使浏览器不会认为它不会得到响应。 “ h”仅表示“什么都没有发生”。
Chrome支持Web套接字,因此Meteor可以将它们用于对长请求的回退,但是,坦率地说,一旦实现了挂起请求,它们就一点也不坏(请确保浏览器连接限制仍然适用)。
关于javascript - 防止XmlHttpRequest递归调用服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038252/
我有一个应用程序,其中许多对象都扩展了一个抽象类,该抽象类定义了诸如 create() edit() retrieve() 和 delete()。由于每个子类对这些函数使用相同的逻辑,抽象类定义了默认
我正在使用$anchorScroll滚动到页面顶部,其中 html 元素具有 ID #brand。 AngularJS 代码: $location.hash(
我想停用我的应用程序中的右键单击,该右键单击提供了在桌面上安装应用程序的选项。我该如何做这样的事情? 最佳答案 右键单击 Visual Studio 中的项目并选择属性。那里有一个复选框“启用浏览器运
我使用 jquery 定位 div,在我的 CSS 中我有一个 div.right-sm:hover{background-color: blue} 我想使用 jquery 停止悬停: $(this
所以,我正在尝试复制 html5“占位符”属性功能。 我目前坚持的一件事是,在获得元素焦点时,插入符号立即出现在输入的开头。 就目前情况而言,插入符号出现在用户单击的位置,然后当我使用 jQuery
当表单填写并发送时,如果您刷新页面,它表示表单将再次发送。 (再次提交表格)。 防止这种情况发生的好方法是什么?或者终止这个 session ? 这方面有什么指导吗? 谢谢 最佳答案 处理完POST信
我想阻止 @ 被输入到 input 中。但它不起作用,知道为什么吗? $(function() { $(document).on('keyup', '[placeholder="x"]', fun
我正在使用 PHP 创建一个应用程序并涉及 MySQL。如果在请求过程中发生错误,我将如何“将查询分组在一起”,检查它是否会成功,然后对真实表进行实际影响。如果对表的实际更新失败,则恢复到更新之前的状
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Best Java obfuscator ? 对于我的示例,我知道 eclipse 提供了一个反编译插件。而
这是一个演示我的问题的 fiddle :JSFiddle 我正在制作自定义下拉菜单(实际上我使用的是 icomoon 图标而不是 V)...它看起来不错,但是父元素的 ::after 是阻止选择:(
每当我编写需要大量条件的代码时,我都会这样做: if foo: if bar: if foobar: if barfoo: if foobarfoo:
我不确定术语是否正确,您可以使用哪些代码实践来使某人难以修改二进制文件/程序集以绕过检查: 例如在源代码中。 bool verificationResult = verify(); if (verif
我正在寻找一种简单的方法来检查多个零件表,以确定给定零件号在添加到给定表之前是否已经存在。 我目前想到的最好的想法是一个辅助表,它简单地将所有表中的每个 PN 列在一个列中,并带有一个唯一的键;但是我
这个问题在这里已经有了答案: jquery stop child triggering parent event (7 个答案) 关闭 8 年前。 我不确定这是否真的冒泡,我会解释。 我有这个:
我有一个 Spring MVC web 应用程序(不确定该信息是否重要,但它可能是)使用 ModelAndView 将字符串值传递给 JSP 文件。 字符串值的形式是: d@.
我在这里尝试使用表单 key 方法进行 csrf 保护 http://net.tutsplus.com/tutorials/php/secure-your-forms-with-form-keys/
htmlentities 是防止 PHP 中的 XSS 的最佳解决方案吗?我还想允许像 b、i、a 和 img 这样的简单标签。实现这一点的最佳解决方案是什么?我确实考虑过 bbcode,但发现如果没
我有一个非常基本的 JAX-RS 服务(下面的 BookService 类),它允许创建 Book 类型的实体(也在下面)。 POST负载 { "acquisitionDate": 14188
我正在使用 Polymer 1.5,我确实需要“this”变量不要映射到外部。我知道 typescript 会为某些人做这件事 valid reasons . declare var Polymer:
这个问题在这里已经有了答案: Class-level read-only properties in Python (3 个答案) 关闭 6 年前。 有没有一种方法可以通过重写实例变量的 __set
我是一名优秀的程序员,十分优秀!