D3.json 设置缓存为 false
Posted
技术标签:
【中文标题】D3.json 设置缓存为 false【英文标题】:D3.json setup cache to false 【发布时间】:2014-08-11 02:10:30 【问题描述】:我注意到使用 json 调用 (d3.json
) 重绘 D3 元素不想在 IE9+ 上更新。其原因是 json 调用被缓存,因此浏览器不会注册,因为新数据已被传递。普通 jQuery ajax 调用的解决方法是将其属性设置为 cache: false,全局用于所有 ajax 调用:
$.ajaxSetup( cache: false );
但是我如何将它添加到d3.json
调用中,因为它使用自己的方法来调用 ajax?我成功地在路径后添加了当前时间戳:
var noCache = new Date().getTime();
d3.json(data + "?_=" + noCache)
但是这样做有点蹩脚......有什么建议我可以如何做到这一点?或者更好的是,仅在 IE 运行时如何设置它:)
【问题讨论】:
我觉得这里用JQuery可能会更方便。 你说得对。我将所有电话从d3.json
更改为$.ajax
。现在我遇到另一个问题,如何确定浏览器是IE,还是浏览器是IE10-11?因为他们从这些版本中删除了条件 cmets IF IE
。仍在网上寻找答案,但找不到正确的答案
【参考方案1】:
在使用不允许 url 参数的 API 时,我很幸运:
d3.json('your url',
cache: "no-store"
).then(...
【讨论】:
【参考方案2】:我遇到了同样的问题。 我通过将此代码添加到 html 文档的 HEAD 来解决它。
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
但是,这会阻止缓存特定页面中的每个对象,因此请注意图像、字体和其他内容。
【讨论】:
他们只想让 AJAX 请求的缓存失效,而不是整个页面的缓存。仅当您根本不希望您的页面被缓存时才应该这样做,这对于您有回访的网站来说并不理想。缓存是你的朋友!以上是关于D3.json 设置缓存为 false的主要内容,如果未能解决你的问题,请参考以下文章