私は動的なデータを持たないクライアントサイトをいくつか維持しています。すべてが静的なasp.netであり、C#です。
1週間のような極端な時間にページ全体をキャッシュするのに落とし穴がありますか?長期間の静的ページのキャッシュ
キッビー、私たちはサイト上のいくつかのコントロール(広告回転子、いくつかのajax拡張機能)をサイト上で使用します。それらはおそらく完全にHTMLで書かれているかもしれませんが、便宜上、私は他のすべてのサイトで使用しているものだけに固執しました。
私は動的なデータを持たないクライアントサイトをいくつか維持しています。すべてが静的なasp.netであり、C#です。
1週間のような極端な時間にページ全体をキャッシュするのに落とし穴がありますか?長期間の静的ページのキャッシュ
キッビー、私たちはサイト上のいくつかのコントロール(広告回転子、いくつかのajax拡張機能)をサイト上で使用します。それらはおそらく完全にHTMLで書かれているかもしれませんが、便宜上、私は他のすべてのサイトで使用しているものだけに固執しました。
データがないと言うと、どのようにasp.netやc#を使用していますか?プレーンなHTMLに比べてどのような機能を提供していますか?また、キャッシングを計画する場合は、ファイルにキャッシュし、要求があったときにファイルをストリームアウトするのが最善の方法です。 OSは常にファイルをディスクから読み取る必要がないように、ファイルをメモリに保持しておく。
コードを更新する必要がある場合は、キャッシュをクリアできることを確認するために、キャッシュ更新メカニズムを構築したい場合があります。それ以外には、私が考えることのできる問題はありません。
データを更新する場合、キャッシュ時間が大幅に短縮されるのは唯一の問題です。安全を期すためには、新しいバージョンが利用可能になるまでに1週間ほどかかることを想定しなければなりません。 ISPレベルのプロキシサーバーなどの中間ホストは、しばしば積極的にキャッシュするため、この遅延が発生します。
キャッシュするファイルが大きい場合、Content EngineがIf-Modified-Sinceをサポートしていることを確認します。
往復回数を減らすことが重要な小さなファイル(ページコンテンツ、CSS、画像など)の場合、有効期限が長く(年?)、コンテンツが変更されたときにURLを変更すると、ベスト。これにより、ユーザーエージェントがいつ新しいコンテンツを取得するかを制御できます。
Yahoo! reducing HTTP requestsとbrowser cache usageに関する2部記事を発表しました。私はここでそれをすべて繰り返すことはしませんが、これはあなたが何をすべきかを案内するよい読みです。
私の気持ちは、ほとんどのユーザーの単一セッションをカバーするのに十分な時間帯を選択することですが、内容を更新したい場合はあまりにも不都合が生じないように十分に低くします。あなたのすべてのコンテンツのLast-Modifiedがある場合は、必ずIf-Modified-Sinceをサポートしてください。
最後に、あなたのコンテンツがキャッシュ可能で、新しいコンテンツを今すぐプッシュする必要がある場合は、いつでも新しいURLを使用できます。この最後のキャッシュ可能なコンテンツURLは、最新バージョンへの永続的なリンクを公開する場合は、固定のHTTP 302 redirect URLの後ろに置くことができます。
私が取り組んでいるプロジェクトでも同様の問題があります。 かなりのデータがあります。静的ですが、変更可能です。
私がやったことは、データをローカルファイルに保存して変更を監視することでした。ファイルを削除しない限り、DBサーバーはヒットすることはありません。この場合、DBサーバーはそのファイルをスクロールしてデータファイルを再生成します。
私たちは基本的に、ロード/セーブ中にディスクIOを少し必要としない限り、DBサーバーへのトラフィックはありません。私たちはまだそれを制御しています。
また、ディスクIOを削減したい場合は、実際のWebサーバーキャッシュモデルでこれを結びつけることもできます(我々の場合は本当に必要ありません)。
これはそれについて移動する完全に間違った方法かもしれないが、それは私たちのためにとてもいい仕事に思える:)
それが静的である場合、あなたはおそらく一度ページを生成したほうが良いし、次にアップ役立つであろう結果として静的なHTMLファイルが直接生成されます。
静的な場合は、なぜキャッシュを邪魔するのですか? IISがそれを心配させる。