5

Html.RenderAction<CartController>(c => c.Show());マスター ページで使用して、すべてのページのカートを表示しています。問題は、アイテムをカートに追加してからブラウザの戻るボタンを押したときです。更新ボタンを押すか、別のページに移動するまで、(キャッシュからの) 古いカートが表示されます。

私はこれを試してみましが、完全に機能しますが、ページ全体とサイト内のすべてのページに対してグローバルにキャッシュを無効にします (このアクションメソッドはマスターページで使用されるため)。パフォーマンス上の理由から、他のいくつかの部分ビュー (アクション メソッド) のキャッシュを有効にする必要があります。

ページの読み込み時にカート (およびログイン ビュー) を更新するために AJAX でクライアント側スクリプトを使用したくありませんが、それが今考えられる唯一の解決策です。

誰かがよく知っていますか?

4

2 に答える 2

1

ASP.NET MVC でのドーナツ ホール キャッシュ

カートを除くすべてのページをキャッシュしたい場合。カートを含むビュー コントロールを実装できます。このビュー コントロールからキャッシュ ポリシーを削除します。

<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Joke>>" %>
<%@ OutputCache Duration="100" VaryByParam="none" %>

<ul>
<% foreach(var joke in Model) { %>
    <li><%= Html.Encode(joke.Title) %></li>
<% } %>
</ul>

Haacked は、ここでさらに詳しく説明しています。

お役に立てば幸いです。

于 2010-05-15T19:05:28.720 に答える
1

iframe や ajax を使用しない限り、ページの一部だけのブラウザー キャッシュを無効にする方法はありません。ブラウザはキャッシュからデータを取得するだけで、ページ キャッシュを無効にするか無効にするかのどちらかです。

于 2011-10-07T14:37:47.110 に答える