4

私は、動的データをまったく持たないいくつかのクライアント サイトを維持しています。すべてが c# を使用した静的 asp.net です。
1 週間などの極端な期間、ページ全体をキャッシュすることに落とし穴はありますか?

Kibbee、サイトでいくつかのコントロール (広告ローテーター、一部の ajax 拡張機能) を使用しています。それらはおそらく完全に html で記述できますが、便宜上、他のすべてのサイトで使用しているものに固執しました。

4

6 に答える 6

2

長いキャッシュ時間の唯一の重大な落とし穴は、そのデータを更新する場合に発生します。安全のために、新しいバージョンが利用可能になるまでに最大 1 週間かかると想定する必要があります。ISP レベルのプロキシ サーバーなどの中間ホストは頻繁にキャッシュを行うため、この遅延が発生します。

キャッシュするファイルが大きい場合は、コンテンツ エンジンが If-Modified-Since をサポートしていることを確認してください。

小さなファイル (ページ コンテンツ、CSS、画像など) の場合、ラウンドトリップの回数を減らすことが重要であり、有効期限が長く (1 年?)、コンテンツが変更されたときに URL を変更することが最適です。これにより、ユーザー エージェントが新しいコンテンツを取得するタイミングを制御できます。

ヤフー!は、HTTP リクエストとブラウザ キャッシュの使用量の削減に関する 2 部構成の記事を公開しました。ここですべてを繰り返すことはしませんが、これらは何をすべきかを説明する良い読み物です。

ほとんどのユーザーの 1 回のセッションをカバーするのに十分な期間を選択する必要がありますが、コンテンツを更新したい場合に不便を感じないように十分に短い期間を選択する必要があります。すべてのコンテンツに Last-Modified がある場合は、If-Modified-Since を必ずサポートしてください。

最後に、コンテンツがキャッシュ可能で、新しいコンテンツをすぐにプッシュする必要がある場合は、いつでも新しい URL を使用できます。この最終的なキャッシュ可能なコンテンツ URL は、固定のHTTP 302 リダイレクトURLの背後に配置できます。これは、最新バージョンへの永続的なリンクを公開したい場合に備えてください。

于 2008-08-30T23:48:26.380 に答える
1

私が取り組んでいるプロジェクトにも同様の問題があります。ほとんど静的なデータがありますが、変更可能です..

私がやったことは、データをローカルファイルに保存してから、変更を監視することです。ファイルを削除しない限り、DB サーバーはヒットしません。その場合、DB にスクートしてデータ ファイルを再生成します。

つまり、ロード/保存中に基本的にディスク IO が少し発生し、必要な場合を除き DB サーバーへのトラフィックは発生せず、引き続き制御できます (手動で削除するか、スクリプトを作成することができます)。

また、ディスク IO を減らしたい場合は、これを実際の Web サーバー キャッシング モデルと結び付けることができることも付け加えておく必要があります (この場合、実際には必要ありませんでした)。

これは完全に間違った方法かもしれませんが、私たちにとっては非常にうまく機能しているようです:)

于 2008-09-09T08:10:08.780 に答える
1

それが静的である場合、なぜキャッシングをわざわざするのでしょうか? IIS に任せましょう。

于 2009-02-25T22:17:35.213 に答える
0

データがないと言うとき、asp.net や c# をどのように使用していますか。プレーンな HTML よりも優れた機能は何ですか? また、キャッシュを計画している場合は、おそらくファイルにキャッシュし、要求が行われたときにファイルをストリーミングすることをお勧めします。OS がファイルをメモリに保持するので、常にディスクからファイルを読み取る必要はありません。

于 2008-08-30T23:36:59.353 に答える
0

コードを更新する必要がある場合にキャッシュをクリアできるようにするために、これを行う場合はキャッシュ更新メカニズムを組み込むことをお勧めします。それ以外には、私が考えることができる問題はありません。

于 2008-08-30T23:37:05.860 に答える