3

タイトルが示すように、クライアント側で Outputcache をクリアするにはどうすればよいですか? ユーザーが特定のアクションを実行した後にクリアする必要がある ajax 呼び出しがいくつかあります。

私は試した:

Response.RemoveOutputCacheItem(Url.Action("Action", "Controller"));

しかし、うまくいきませんでした。

私はそれを手動で失効させようとさえしました(これは悪いアプローチですが):

                Response.Expires = 0;
                Response.ExpiresAbsolute = DateTime.Now.AddMinutes(-1);
                Response.AddHeader("pragma", "no-cache");
                Response.AddHeader("cache-control", "private");
                Response.CacheControl = "no-cache";

それもうまくいきませんでした。

明確にするために、私はを使用してOutputcacheLocation = Clientいます。Server上記の例に設定すると、問題なく動作します。

4

2 に答える 2

3

必要なのがキャッシュにもかかわらず毎回異なるデータを返すaxax呼び出しである場合、同じ引数で呼び出された場合、唯一の信頼できる方法は、クエリ文字列に別の変数を追加することです。これは常に異なります。たとえば、ミリ秒までの時間です。 。

これが私がそれを行う方法です(パラメーターno_cache):

<script type="text/javascript">
Date.prototype.getTicksUTC = function() 
{
    return Date.parse(this.toUTCString()) + this.getUTCMilliseconds();
} // End Function getTicksUTC


Date.prototype.getTicksGMT = function() 
{
    return Date.parse(this.toGMTString()) + this.getMilliseconds();
} // End Function getTicksGMT

var strURL= "http://localhost/ajax/whateverhandler.ashx?param1=value1&para2=value2&paraN=valueN&no_cache=" + new Date().getTicksUTC();
alert(strURL);

</script> 
于 2012-04-11T16:12:02.120 に答える
-2

できません。キャッシュの場所をクライアントに設定すると、それを管理する責任がクライアントに与えられます。

于 2012-04-11T14:13:39.150 に答える