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的主要内容,如果未能解决你的问题,请参考以下文章

mybatis缓存有关的设置和属性

[mybatis]缓存_缓存有关的设置以及属性

yii2 设置的缓存无效,返回false,不存在

Computed缓存原理

查询缓存amazon redshift

mybatis集成redis作为二级缓存