ビュー結果オブジェクトを自分でキャッシュすることで、MVC 4でOutputCacheアクションフィルタの機能のほとんどを再作成しようとしています。 OutputCacheアクションフィルタを使用したくない理由は、AppFabricと部分的なビューで使用できないためです。部分的なビューは常にMemoryCacheに格納されており、キャッシュされたオブジェクトをサーバーファーム全体で使用する必要があります。AppFabricでのMVCビューの手動キャッシング
私が持っている最初の問題は、これは私が基本的に最後のビューが何であるかを返すために何か他のものをキャッシュする必要があるなら、私は思ってしまう
{"Type 'System.Web.Mvc.TempDataDictionary' cannot be serialized.
Consider marking it with the DataContractAttribute attribute, and marking all of
its members you want serialized with the DataMemberAttribute attribute.
If the type is a collection, consider marking it with the
CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for
other supported types."}
です。誰かが、サーバーファーム上の部分的なビューをキャッシュするために、ビューを再作成する代わりにキャッシュする必要があるアイデアを持っているのでしょうか。私はこのために第三者のプラグインを使用したくありません。
おかげ
アップデート:私はそうのような部分図の文字列表現をキャッシュ開始しました:
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "ViewName");
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
view = sw.GetStringBuilder().ToString();
}
これは単なるキャッシュ内の文字列を取得して、コンテンツとしてそれを返すすることが容易になりましたアクション。私はまだ他の提案やこれを行うためのよりよい方法を探しています。