0

Tomcat で実行されているサーバー側アプリケーションで、インターネットから取得したランダムなユーザー要求サイトに基づいて、完全な HTML ページ (ヘッダー付き) を生成しています。クライアント側アプリケーションは、特定の Web ページの処理を要求するために非同期コールバックを使用します。処理には時間がかかることがあるため、ポーリングを介して進行状況をユーザーに通知したいので、コールバックを使用します。

サーバー側では、Web ページが取得された後に処理され、「拡張」バージョンが作成されます。次に、このバージョンをユーザーに戻す必要があります。クライアント側アプリケーションのページの一部としてページを表示することはできません。

現在、サーバーは一時ファイルを生成し、そのファイルへのリンクを送り返します。これは明らかに準最適です。

私が思いつく次善の解決策は、HTML コンテンツをその md5-sums または sha1-ids と一緒に保存し、ハッシュ ID を引数としてサーブレットへのリンクを送り返すキャッシング DB を作成することです。次に、サーブレットは caching-DB からサイトを要求します。

より良い解決策はありますか?そうでない場合、どの DB バックエンドを提案しますか? 私はSQLiteについて考えています。<html>解決すべき問題の一部は、ページを</html>クライアント側にプッシュするにはどうすればよいですか?

4

2 に答える 2

1

一時ファイルを作成していっぱいにしてからリンクを送信する代わりに、メモリ バッファーを作成していっぱいにしてから、応答として送信できます( MIME タイプ 'text/html' で提供します)。ページ バッファーをすぐに送信したくない場合は、ユーザーのセッションで後で使用できるように保存できます。この方法で大量のメモリを消費することが心配な場合は、特定の数のページ バッファだけをメモリ内に保持し、残りを後で取得できるようにディスクに書き込むことができます。DB を使用するのはやり過ぎのように思えますが (結局のところ、関連する情報は含まれていません)、キャッシュの問題はうまく解決されます。

于 2008-09-17T09:43:05.027 に答える
1

真の永続性が必要ない場合は、SQL の代わりに memcached のような一時的なものを使用するのはどうですか? 呼び出しのセマンティクスは非常にクリーンで簡単です。もちろん、手動でデータを期限切れにすることも、ttl または @ restart することもできます。

于 2008-09-17T09:30:57.503 に答える