2011-09-13 4 views
0

私はちょうどうまく動作するascxコントロールを持っています。これは、より大きいaspxページに含まれています。フラグメントキャッシュに入れたいので、先頭に適切なCacheOutputディレクティブを追加しました。ただし、基礎となるaspx.csファイルの制御では、ページが2度目にロードされたときに制御変数がnullに設定されるようになりました。私はそれが起こると言ったウェブ上のいくつかの場所を見つけましたが、コントロールにアクセスするための解決策も見つけられませんでした。ASP.NETフラグメントキャッシュ - コントロールは2度目のヌルです

私には何が欠けていますか?

また、キャッシュされる場所を制御できますか?私はそれをサーバーではなくブラウザのキャッシュにキャッシュすることはできますか?

答えて

1

質問#1:出力キャッシュは、HTML結果のみをサーバーに格納します。ユーザーコントロールでコードを操作したり実行したりする場合は、完全な出力キャッシュを使用しないでください。下位レベルのキャッシュ、おそらくデータベースまたはオブジェクトのキャッシュを調べたり、完全な出力キャッシングを使用するが、外部のユーザーコントロールがもはや使用しない別のユーザーコントロールを埋め込むことができます。

質問#2:「キャッシュされる場所を制御できますか?」出力キャッシュを使用する場合は、noを指定します。それは常にサーバー上のキャッシュを意味します。しかし、さまざまなレベルのキャッシュが存在します。ブラウザでフルHTTP応答をキャッシュすることができます:単一のHTMLページ、CSSファイルなどブラウザのページの一部のみをキャッシュし、残りのページを動的にする場合は、何らかのJavaScriptを使ってやってください。 HTML5ローカルストレージ、または適切なキャッシングヘッダーを持つAJAX、または304 Not Modifiedレスポンスで応答します。

サイドノート:「フラグメントキャッシュ」という用語は、ASP.Netの世界では「部分キャッシュ」と呼ばれることがよくあります。

SOヒント:これは2つの質問であり、今後2つの個別の質問として実際に尋ねる必要があります。 また、ここで問題を解決する方法はたくさんあります。あなたがやっていることと実行しようとしているパフォーマンス上の問題に、より多くのコンテキストを提供すれば、より具体的な回答を提供することができます。

関連する問題