anu*_*shr 10 javascript jquery google-chrome backbone.js
我对Chrome有这个奇怪的问题.它经常出现缓存PUT请求.
详细信息:我有一个使用backbone.js的应用程序,当尝试将某些更改保留到模型时(主干自动生成PUT请求),Chrome只是不会将该请求发送到服务器.它在Firefox和IE中运行得非常好(到目前为止还没有在Safari中看到过这个问题).
以下是Chrome开发者工具"网络"标签的屏幕截图.如您所见,PUT请求的响应是从缓存返回的(请求没有到达服务器!!)

这是同一请求的标题详细信息的屏幕截图.再一次,很明显Chrome并不打算将PUT请求发送到服务器.

请求的有效负载是JSON数据.有关为什么会发生这种情况的想法/我做错了什么?
更新: Chromium已经确认这确实是一个错误(感谢JanHančič).
临时解决方案
我最终覆盖了Backbone.sync方法并将时间戳附加到PUT,POST和DELETE请求的查询字符串,以便它们始终是唯一的:
if(!options.data && model && (method == 'create' || method == 'update' || method == 'delete')) {
params.url += (params.url.indexOf('?') == -1 ? '?' : '&') + '_=' + new Date().getTime();
}
Run Code Online (Sandbox Code Playgroud)
我使用额外的参数来避免缓存:
url += '?_dc=' + Math.random().toFixed(20).replace('.', '');
Run Code Online (Sandbox Code Playgroud)
我不在服务器端解释此参数。
编辑:除了 Chrome 之外,还有很多东西可以缓存请求 - 例如用户的代理服务器。我认为额外的查询参数是避免缓存的一个很好的解决方案。
| 归档时间: |
|
| 查看次数: |
2827 次 |
| 最近记录: |