2009-09-04 44 views
1

我有一個相當惱人的問題,並提出了一個相當醜陋的黑客使其工作。管理ajax Couchdb調用和IE的(hta)積極的緩存

我使用CouchDB數據庫開發Hta應用程序(供公司內部使用)。問題是似乎有一些非常積極的數據庫查詢緩存,並且很難提出解決方案。 因此,數據庫中的更新數據只會在瀏覽器中出現,而瀏覽器中仍然存在先前的請求結果,直到整個應用程序重新啓動。

呵呵,CouchDB(或者它的mochiweb服務器)不允許未知的GET變量,所以追加某種時間戳的通常解決方案不會工作。

我已經找到某種解決方案,但它該死的醜陋。解決方案是:

  • 只有打開的文檔與最新版本號(簡單和美觀大方,不會對工作的意見)的隨機對每個讀
  • 使用Apache作爲正向代理聽200多個港口,並選擇一個查詢。 (這是醜陋的)。

HTA接受阿賈克斯(甚至在其他領域,奇怪的行爲也許)調用其他端口,因此它工作得很好,我只是有1/200的機會,新的數據將不會出現,但是這仍然好然後1/1,我可以忍受。

所以我問的是,有沒有更好的解決方案呢?我可以入侵mochiweb服務器來修改緩存標題(並希望它們不會被忽略)嗎?有沒有一個特殊的未知「一次性」鍵我可以用在URL的附加一些隨機字符串?或者有沒有辦法告訴Hta不要緩存任何東西(從應用程序內部,這應該在數百臺電腦上運行)?

回答

2

它仍然是醜陋的,但是比你當前的apache安裝程序稍微難看,但是你不能使用apache重寫規則來允許你在url上設置一個任意的no_cache屬性嗎? Apache可以扔掉它,所以couchdb不會看到它。

+0

哦,好主意,我會嘗試一下,看看我能否成功。 – Berzemus 2009-09-07 08:05:55

+0

我真的不喜歡修改重寫條件和規則,但唉,它的工作原理,很好。非常感謝。 – Berzemus 2009-09-09 16:06:39

+0

如果所有你需要的apache服務器都是代理服務器,你也可以考慮使用比apache更輕的東西。 nginx很輕,應該做你想做的。 – 2009-09-14 04:01:54