ASP.Net Webサイトのホームページでページ出力キャッシュを使用して、読み込みを高速化しています。キャッシュ時間は非常に短い(5分)ため、データの更新は短時間でユーザーに反映されます。ホームページ自体には、表示された質問のベストアンサーに投票するために使用される「投票」というセクションがあります。このセクションでは、ユーザーがすでに投票した場合に投票結果が表示され、投票していないユーザーの場合は、投票の質問を表示する必要があります。問題は、すでに投票したユーザーがホームページにアクセスしたときに、投票結果が表示された状態でページがキャッシュされることです。その5分のキャッシュ時間内に、まだ投票していない別のユーザーがそのページにアクセスすると、そのユーザーの結果も投票の質問の代わりに表示されるため、ユーザーはその投票に投票できません。
これを防ぐために、ホームページのすべてのセクションのデータテーブルをキャッシュしてページをレンダリングするデータキャッシュ手法を試しました。この手法はまだページ出力キャッシュほど高速ではないため、ユーザーはこの手法を望んでいません。両方のデータキャッシングのロード時間は、ページ出力キャッシングと比較するとはるかに長くなります。
また、ページ全体がキャッシュされた場合でも、ページの一部だけがリロードされる置換キャッシュ方式を試しました。このキャッシュ方法で最も重要な問題は、その置換コントロールで使用できるのはHTMLコントロールのみであるということです。HTMLコントロールのみを使用して投票セクションを作成しようとしましたが、ページの他のセクションで使用されているAJAX更新パネルで問題が発生します。
この問題を解決するために私を案内してください。ページの一部(ポーリングセクション)だけをユーザーごとにリロードする必要があり、他のセクションはキャッシュから配信する必要があります。これは、ページのパフォーマンスを損なうことなく発生するはずです。