問題タブ [varybyparam]
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 - ASP.NET MVC Webサイトでキャッシュが正しく機能していませんか?
ASP.NETMVCWebサイトでOutputCachingを使用しようとしています。問題は、クエリ文字列パラメータの1つの値を変更しようとすると、要求された最初のアイテムのデータが返されることです。
これが私のコードです(パラメータ名が変更されています)...
- 注1:ApiAuthorize-「Key」と呼ばれるクエリ文字列パラメータをチェックし、メモリ内のディクショナリをチェックして、存在するかどうかを確認するカスタム属性。
- 注2:HandleErrorAsJson-例外がスローされた場合にエラーメッセージをjsonとして返すカスタム属性。
これが私がこのアクションに対して行っている2つのサンプル呼び出しです:-
- / GET http://api.MySite.com/search/scorecard?foo=hello+world,+PewPew&key=abcd1234&bar=2
- / GET http://api.MySite.com/search/scorecard?foo=invalid+search+stuff&key=abcd1234&bar=2
したがって、最初の呼び出し(foo = hello world、Pew Pew)からのデータは200OKとして返されます。次に、2番目のAPI呼び出しは200 OKを返しますが、前の呼び出しのデータを使用します。
また、プロキシサーバーを使用していません。OutputCache属性をコメントアウトすると、すべて問題ありません。
私も次のことを試しました(キャッシュする必要があるたびに手動でリストします)....。
運がない:(
キャッシュの一意のキーの一部としてAPIの「Key」パラメータが含まれていることを確認する必要があることに注意してください。同じことを検索してほしくないのですが、2人目の人が正しいキーを持っていない場合は、キャッシュされた結果ではなく、エラーメッセージが表示されます(技術的には、401 Not Authorizedですが、いずれかの方法)...
考え?
iis - VaryByParam!= "none"の場合、クライアントとサーバーの両方でキャッシュするにはどうすればよいですか?
クエリ文字列パラメータ「Version」によってサーバーの出力キャッシュを変更しながら、クライアントとサーバーの両方でページをキャッシュする方法を探しています。
このタグで:
私はこれらのヘッダーを取得します:
これは私がクライアント側で望んでいることを正確に実行しますが、サーバー側では「バージョン」によって異なりません。
一方、このタグで:
私はこれらのヘッダーを取得します:
これはサーバー側で私が望むことを正確に実行しますが、「Vary:*」ヘッダーは、要求ごとにブラウザーにページを再ロードするように強制します。
パラメータを変えながら、クライアント側とサーバー側の両方でキャッシュを取得する方法はありますか?
asp.net-mvc - OutputCache 属性で VaryByParam パラメータを設定する必要があるのはなぜですか?
私はこれについてまったく調査していません。ただ興味があります。
ASP.NET MVC の OutputCacheAttribute クラスには、Duration と VaryByParam の値が必要です。Duration が必要な理由はわかりましたが、VaryByParam は必要ありません。
asp.net-mvc-2 - ASP .Net MVC 2.0 キャッシングの問題
次のようなアクションで OutputCache を使用しています。
また、Global.asax.cs の RegisterRoutes 関数には次のルートが含まれています。
ルート マップの URL は次のようになります。
- example.com/site1/catalog.xml
- example.com/site2/catalog.xml
- example.com/whatever/catalog.xml
カタログ アクションに。
期待される結果は、渡されたすべてのパラメーターの最初の要求の後に静的コンテンツを返すことだと思いますが、コンテンツは適切にキャッシュされていません。パラメータを使用するように Catalog アクションを変更してから、VarybyParam = "none" を指定し、MapRoute 関数で UrlParameter.Optional を使用してパラメータを追加する必要がありますか、それともここで何か他のことが起こっていますか?
c# - VaryByCustom がセッション変数に対して機能しない
ログインシステムを備えた Web サイトに出力キャッシュを使用しています。すべてのユーザーがアクセスできるグローバル ページがあります。これらのページはキャッシュされ、マスター ページも使用します。
ユーザーのログイン情報をセッションに保存しています。私のglobal.asaxファイルはここにあります:
認証されたユーザーに表示されるマスターページにパネルがあります。ユーザーがログインして公開ページ A を表示すると、別のゲスト ユーザーにもページ A の認証済みユーザー パネルが表示されます。ゲストが最初にページ A を表示した場合、認証済みユーザーはページ A のパネルを表示しません。
私のコードのどの部分が間違っていますか? 初めてVaryByCustomを使用しています。
編集
global.asax を次のように変更しましたが、テキスト ファイルには何も書き込まれません。
c# - VaryByCustomキャッシングを実装する方法は?
ホストに応じて特定のページをキャッシュする機能を実装しようとしています。これは、同じパラメーターを持つ複数のバージョンのページを作成でき、リクエストに関する唯一の違いは、リクエストされているホストであるためです。
したがって、たとえば、これら2つのURLは同じページを要求しますが、スタイルは異なります。
と
ここで概説した例を見ていきます。
http://msdn.microsoft.com/en-us/library/5ecf4420%28v=VS.90%29.aspx
しかし、それは私には意味がありません。
これをglobal.asaxに追加しました:
この例では、「プログラムでカスタム文字列を設定するには、SetVaryByCustomメソッドを呼び出して、使用するカスタム文字列を渡します」と、次のようなコードで示しています。
問題は、これをどうしたらよいかわからないことです。前の行を追加したのMvcApplication_EndRequest
は理にかなっているようですが、ブレークポイントを設定しGetVaryByCustomString
てもヒットしないため、これは正しくないと思います。
誰かが私がここで欠けているものを教えてもらえますか?または、これを別の方法で行う必要がある場合はどうなりますか?
編集:以下のREダリンの答え、私はすでに私の行動を次のように飾っています:
ここで、CustomOutputCacheAttribute
は次のように定義されます。
ここで、プロファイルは次のように定義されます。
これを変更する必要がありますか?
asp.net-mvc-4 - MVC 4 子アクションの outputcache 属性が VaryByParam 値で機能しない
クエリ値に応じて子アクションの出力をキャッシュすることはできませんか?
varybyparam なしでうまく機能しています。しかし、パラメーターに応じて PartialViewAboutTest を更新する必要があります。OutPutCache を About ActionREsult に配置すると、VaryByParam が機能します。しかし、この例の PartailViewTestAbout である子アクションでは機能しません。クエリを変更しますが、ページを更新するためにキャッシュ期間が長くなるのを待っていません...
c# - GetVaryByCustomString メソッドが起動されない
GetVaryByCustomString メソッドにブレークポイントを配置しても、メソッドが起動されません。
ユーザーが選択した言語に応じてキャッシュしたいアクション:
Web.config のキャッシュ プロファイル:
Global.asax.cs ファイルでは、次のようになります。
どんな助けでも大歓迎です、ありがとう!