代码之家  ›  专栏  ›  技术社区  ›  Berzemus

管理Ajax couchdb调用和IE(HTA)快速缓存

  •  1
  • Berzemus  · 技术社区  · 15 年前

    我遇到了一个非常恼人的问题,并且想出了一个非常难看的黑客来让它工作。

    我使用CouchDB数据库开发了一个HTA应用程序(供公司内部使用)。问题是似乎有一些非常积极的数据库查询缓存,很难找到解决方案。 因此,在整个应用重新启动之前,数据库中的更新数据不会出现在浏览器中,而浏览器中仍然有以前的请求结果在他的缓存中。

    哦,couchdb(或者它的mochiweb服务器)不允许未知的get变量,所以通常附加某种时间戳的解决方案是行不通的。

    我找到了一些解决办法,但它太难看了。解决方案是:

    • 仅打开具有最新修订号的文档(简单易行,不适用于视图)
    • 使用Apache作为监听200多个端口的转发代理,并在每个读取查询上随机选择一个。(那是丑陋的那个)。

    HTA接受对其他端口的Ajax调用(甚至可能在其他域上,奇怪的行为),所以它工作得很好,我只有1/200的机会新数据不会出现,但这仍然比1/1更好,我可以接受。

    所以我要问的是,有没有更好的解决办法?我可以入侵mochiweb服务器来修改缓存头吗(希望它们不会被忽略)?在URL中是否有一个特殊的未知“throwaway”键可以用来附加一些随机字符串?或者有没有一种方法可以告诉HTA不要缓存任何东西(从应用程序内部,这应该在数百台计算机上工作)?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Jeremy Wall    15 年前

    它仍然很难看,但比当前的Apache设置稍差一点,但是您不能使用Apache重写规则来允许您在URL上设置任意的no-cache属性吗?阿帕奇可以扔掉它,这样CouchDB就看不到了。