2009-09-04 19 views
1

私はかなり厄介な問題を抱えており、それを動作させるためにかなり醜いハックを思いついた。ajax Couchdbの呼び出しとIEの(hta)アシッシブキャッシュ

私はCouchDBデータベース(社内用)を使用してHtaアプリケーションを開発しました。問題は、データベースクエリのいくつかの非常に積極的なキャッシュが存在するように思われ、ソリューションを考え出すのが難しいことです。 データベース内の更新されたデータは、ブラウザ全体に表示されず、アプリ全体が新たに開始されるまで、以前のリクエスト結果がキャッシュに残っています。

ああ、CouchDB(またはそのmochiwebサーバー)は未知のGET変数を許可していないので、何らかのタイムスタンプを追加する通常の解決法は機能しません。

私はいくつかの解決策を見つけましたが、それは醜いです。 200個の以上のポートを聞いフォワードプロキシとして最新のリビジョン番号(簡単で素敵な、ビュー上では動作しません)

  • 使用Apacheで

    • のみ開いているドキュメント、および各読み取りにランダムにいずれかを選択します。ソリューションは、クエリ。 (それは醜いものです)。

    HTAは、Ajaxの他のポートへの呼び出し(多分他のドメイン上の、奇妙な行動を)受け入れて、それがうまく動作して、私はちょうど新しいデータが出てくるではないだろうという1/200のチャンスを持っているが、それはまだましです1/1、私はそれで生きることができます。

    だから私が求めているのは、これにはよりよい解決策があるのだろうか?キャッシュヘッダーを変更するためにmochiwebサーバーをハックすることはできますか(そして、それらが無視されないことを望みますか?)ランダムな文字列を追加するためにURLに使用できる特別な未知の "使い捨て"キーはありますか?または、何もキャッシュしないようにHtaに指示する方法はありますか(アプリ内から何百ものコンピュータで動作するはずです)。

  • 答えて

    2

    これはまだあなたの現在のApache設定よりも醜いですが、少し醜いですが、URLに任意のno_cache属性を設定できるようにApacheの書き換えルールを使用できませんか? Apacheはそれを捨てて、couchdbがそれを見ないようにすることができます。

    +0

    偉大なアイデア、私はそれを試してみる、私はそれを動作させることができるかどうかを確認します。 – Berzemus

    +0

    私は書き換え条件やルールを試してみたのは本当に楽しかったですが、うーん、うまくいきます。どうもありがとう。 – Berzemus

    +0

    また、Apacheサーバーが必要な場合は、プロキシより軽いものを使用することを検討することもできます。 nginxはかなり軽く、あなたが望むことをする必要があります。 –