我正在构建一个简单的基于网络的仪表板系统。
我有一个简单的 html,它使用 jQuery ajax 来调用我的服务器:
$( document ).ready(function() {
var url = "...";
$.ajax({url : url, type : 'get'})
.done(successFunction)
.fail(errorFunction);
});
我注意到有时请求会停滞并长时间处于Pending
状态。
谷歌搜索后看到this和 that问题,我在 Chrome 设置中禁用了“使用预测服务更快地加载页面”标志,问题就解决了。
但是,我需要找到一种方法以编程方式禁用此标志(也许通过向我的 ajax 调用添加请求 header ?),这样我的用户就不会遇到此问题。
我手动禁用的 Chrome 设置如下图所示:
最佳答案
根据 Mozilla 的说法,这似乎不是浏览器的问题,而很可能是实现的问题。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ
是否有禁用链接预取的首选项?
是的,您可以设置一个隐藏的首选项来禁用链接预取。将此行添加到位于您的个人资料目录中的 prefs.js 文件中(或通过 about:config 进行适当的更改):
user_pref("network.prefetch-next", false);
但是,理论上来说,如果需要禁用链接预取,那么实现一定存在问题。如果它不能正常工作,我们宁愿改进实现,也不愿期望用户找到并调整一些模糊的偏好。
我使用 Vue-Resource 来处理 HTTP 请求。它看起来很像 Ajax,我在浏览器上启用了相同的设置,并且它可以完美地处理它。语法非常简单,而且文件非常小。语法看起来像这样。
链接在这里 https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.js文档在这里。
https://github.com/pagekit/vue-resource/blob/master/docs/http.md
Vue.$http.get('path/to/url').then(function(success){
console.log(success.body);
},function(error){
console.log(error)
})
关于Chrome 上的 jQuery ajax : programmatically disable "Use a prediction service to load pages more quickly",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41259055/