問題タブ [donut-caching]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - DonutOutputCache が画像に対して機能しない
次のような ASP.NET MVC コントローラー アクションがあります。
構成ファイルは次のようになります。
レンダリングに使用した画像をブラウザに追加DonutOutputCache
すると、ロードされなくなりました。Fiddler トレースで、大きなバイナリ ファイルがブラウザーに到達していることを確認できますが、レンダリングできないようです。
を削除するDonutOutputCache
と、画像が再び表示されます。
キャッシュなどをクリアしてみました。何かアイデアはありますか?
c# - mvcdonutcaching ASP.NET MVC を使用したドーナツ キャッシング _Layout
私の ASP.NET MVC プロジェクトでは、共有ファイルのナビゲーション メニューにログイン サブメニューがあり_Layout.cshtml
、ユーザーがログインしている場合はユーザー情報を表示し、ログインしていない場合はサインアップ/ログイン オプションを表示します。ログイン サブメニューは、次の名前の共有フォルダーの部分ビューです_LoginPartial
。
さまざまなコントローラーのいくつかのアクションを大量にキャッシュしていますが、明らかな理由から、キャッシュされない_Layout
ようにドーナツキャッシュを実装したいと考えています。これを達成するためにmvcdonutcachingライブラリを_LoginPartial
使用しています (この回答で推奨されています)。これは、追加のプロパティを持ついくつかのオーバーロードを提供します。@Html.Action
bool excludeFromParentCache
そのため、次を返すアクションでを作成LayoutController
しました。UserAuth
_LoginPartial
..そして、表示し_Layout
たいファイルで、mvcdonutcachingオーバーロードを次のよう_LoginPartial
に呼び出します。Html.Action
これをテストするために、 のアクションにOutputCache
長時間の を設定しましたが、次の手順に従うと:Index
FAQController
- ログインする
- /faq に移動します
- ログアウト
- /faq に移動します
/faq はまだログインしていると表示されます。
ここで何が欠けていますか?これは、実際の HTML での mvcdonutcaching の出力です。
更新:代わり_LoginPartial
にのビューにある部分ビューにメニューを移動しようとしました-問題は解決しません。LayoutController
c# - MVCDonutCaching - 子アクション キャッシュを削除する方法 MVC Donut Caching
このMVCDonutCaching Nuget パッケージを使用しているのは、チュートリアルで、これは子アクションで可能であると述べているためです。
この質問がうまくいかなかったか、正しく理解できませんでした。
標準属性で子キャッシュを削除する方法を誰かが知っていればOutputCache
、それも問題ありません。
これを探しましたが、見つかりません。ここに例を見てください:
HomeController (ホームページ) の Index アクション:
NewsController の ChildAction:
HomeController のインデックス ビュー:
キャッシュをクリアするために、子アクションによって保存されたデータを更新するコントローラーとアクションを含む管理領域をアプリケーションに用意しました。そのため、ニュース記事が更新されたとき。ホームページのキャッシュが更新されるはずです。
そのアクションには、次のコードがあります。
複数のバージョンを試しましたが、うまくいきませんでした。誰でも私を助けることができますか?
asp.net-mvc - ユーザーがフォーム認証で管理者としてログインしている場合、ドーナツのキャッシュを回避しますか?
ユーザーが管理者グループのフォーム認証でログインしている場合、キャッシュを回避したいと考えています。
キャッシュ属性をオーバーライドし、コントローラー レベルで適用しました。ただし、メソッド NonAdmin は validationcallback 経由では呼び出されません!
ユーザーがログインしているときに非キャッシュを実現するにはどうすればよいですか?
c# - Mvc Donut Caching プログラムでキャッシュを無効にする
私は自分のプロジェクトでMvcDonutCachingを使用しており、デバッグ/テスト中に支援するためにキャッシュをグローバルに無効にする方法を探しています。
ドキュメントでこれを達成する方法の例を見つけることができませんが、プロパティCacheSettingsManager
を公開する を見つけましたが、これは.IsCachingEnabledGlobally
readonly
このCacheSettingsManager
設定を構成できるコンストラクターもありません。この設定を構成する方法はありますか?
うまくいくかもしれない(醜い)別の解決策がありますが、それは絶対的な最後の手段であり、実際には必要ではありません。
そして、これを私のコントローラーアクションで使用します:
これを行う正しい方法はありますか?
c# - c# mvc と Varnish でドーナツ キャッシングを行うには?
ワニス構成に追加しました
}
私のmvcアプリケーションでは、childactionがあります
Requestヘッダーを追加しました
しかし、Varnish はページ全体をキャッシュし続けます。
何が恋しいですか?ブラウザでリクエスト ヘッダー X-Esi が存在しないことに気付きました。また、ワニスはタグを適切に削除します<esi:include
アクション GetHour のコードは非常に単純で、SQL Server から 10 進数を取得するだけです。
c# - Azure の Web アプリで d:\ ドライブが使用できない原因は何ですか?
ブルー ムーンになると、キャッシュを初期化するときに Azure Web アプリから例外が発生します。
エラーメッセージは次のように述べていFailed to start monitoring changes to 'D:\home\site'
ます。再デプロイにより問題が解決しました。MvcDonutCachingを使用していますが、それが関連しているかどうかはわかりません。
誰かが同様の問題を抱えていましたか?おそらくこれを解決する方法についての提案はありますか?
System.Web.HttpException (0x80070035): 'D:\home\site' への変更の監視を開始できませんでした。System.Web.FileChangesMonitor.FindDirectoryMonitor (文字列ディレクトリ、ブール値 addIfNotFound、ブール値 throwOnError) で System.Web.FileChangesMonitor.StartMonitoringPath (文字列エイリアス、FileChangeEventHandler コールバック、FileAttributesData& fad) で System.Web.Caching.CacheDependency.Init (ブール値 isPublic、 String[] filenamesArg、String[] cachekeysArg、CacheDependency 依存関係、DateTime utcStart) System.Web.Caching.CacheDependency..ctor(String filename, DateTime start) at System.Web.Hosting.MapPathBasedVirtualPathProvider.CacheLookupOrInsert(String virtualPath, Boolean isFile) ) System.Collections.Concurrent.ConcurrentDictionary で
2.GetOrAdd(TKey key, Func
2 valueFactory) を System.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, String virtualPath) で System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext, String virtualPath, Func2 virtualPathExists) at System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func
2 virtualPathExists, IDisplayMode currentDisplayMode, Boolean requireConsistentDisplayMode) で System. Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) at System.Web.Mvc.ViewEngineCollection.<>c__DisplayClass6.<FindView>b__5(IViewEngine e) at System.Web.Mvc.ViewEngineCollection.Find(Func
System.Web.Mvc.ViewResultBase.ExecuteResult での System.Web.Mvc.ViewResult.FindView(ControllerContext context) での System.Web.Mvc.ViewEngineCollection.FindView(ControllerContext controllerContext, String viewName, String masterName) での 2 ルックアップ、ブール値 trackSearchedPaths) (ControllerContext コンテキスト) System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult) で System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) で System.Web.Mvc.Controller.b__1d (IAsyncResult asyncResult、ExecuteCoreState innerState) System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid で1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult asyncResult) で System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) で System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) で System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid `1.CallEndDelegate(IAsyncResult asyncResult) で System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) で System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() で System.Web.HttpApplication.ExecuteStep (IExecutionStep ステップ、ブール値および完了同期)