1

私は、ユーザーが多くのページをクリックする Web ベースのシステムに取り組んでいます。特定のページ (本の概要など) に戻ることがよくあるため、処理を高速化するためのキャッシュ メカニズムを実装したいと考えています。

ユーザーのコンテンツを表示する前に、ユーザーの ID とページの URL と共に、コンテンツの MD5 チェックサムをデータベースに保存します。

彼が次回ログインするときに、URL と UserID のエントリがあるかどうかを確認します。存在する場合は、保存されている MD5 を新たに計算したものと比較し、MD5 が等しい場合は、「変更されていない」ヘッダーを送信して、ブラウザーがページ全体をダウンロードする必要がないようにします。

4

1 に答える 1

3

パフォーマンスのボトルネックがどこにあるかを特定するために、最初に Web アプリケーションのプロファイルを作成しましたか?

不必要な最適化に注意してください。ページがすでに正常に読み込まれているのに、数パーセントの速度を絞り出そうとしている場合、私は個人的に特別な最適化を気にしません。

提案された方法を使用すると、MD5 計算に加えて、データベース ヒットが引き続き発生することに注意してください。最初に、クエリを高速化するためにデータベースに適切なインデックスが配置されていることを確認してください。これで十分な場合があります。

ページは画像が多いですか?画像は BLOB としてデータベースまたはファイルシステムに保存されていますか? 画像がデータベースに保存されている場合は、それらをファイル システムに移動し、代わりにファイル名をデータベースに保存します。静的コンテンツ専用の Web サーバーを使用して画像を提供します。静的コンテンツ サーバーは、アプリのプロキシになることもできます。

プレーンテキスト コンテンツ (つまり、HTML、CSS、および JavaScript) に関して帯域幅の使用を削減することが目標である場合は、単純に gzip 圧縮をオンにすることをお勧めします。また、この場合の静的コンテンツ Web サーバーを検討してください。

しかし、提案された解決策が合理的かどうかについての質問に答えるには、うまくいくと思いますが、特定のサイトで効果的かどうかについては多くの要因があります。したがって、できることの 1 つは、キャッシュ システムを実装してから、サイト ( Apache abなど) に対してベンチマーク テストを実行し、実際に違いが生じるかどうかを確認することです。

于 2010-09-04T22:24:29.130 に答える