3

AJAX 要求のパフォーマンス モニターで出力キャッシュ ヒットを取得していない WCF Web サービスのエンドポイントがあります。エンドポイントへのAJAX 要求の出力キャッシュを取得します。

ウェブ構成:

<caching>
  <outputCacheSettings >
    <outputCacheProfiles>
      <add location="Any" name="myCache" duration="3600" varyByParam="*" />
     </outputCacheProfiles>
  </outputCacheSettings>
</caching>

構成に欠けているオプションはありますか? サーバーはキャッシュの価値を判断するためにヘッダーをチェックする必要がないため、問題がそこにあるとは思えないため、Javascript は含めませんでした。

エンドポイント:

[AspNetCacheProfileAttribute("myCache")]
        [WebGet(ResponseFormat= WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "suburb?name={name}&state={state}&category={category}&bedrooms={bedrooms}&country={country}")]
4

1 に答える 1

1

ajax 呼び出しを行う場合、それを cache: false として渡している可能性があります。

そのように呼び出すと、ajax 呼び出しは追加のパラメーターを含む URL を渡し、値はランダムな一意の番号になります。asp.net メソッドがこの追加のパラメーターを受け取り、出力キャッシュをvaryByParam="*"で構成するため、このメソッドはキャッシュされません。解決策は

  1. set cache: true in ajax call - (動的メソッドを呼び出している場合は適切ではありません) または
  2. outputcache varyByParam="none"を設定します (パラメーターに関係なく、メソッドにキャッシュが必要な場合にのみ使用します) または
  3. outputcache varyByParam="parameter1;parameter2" を設定します(複数のパラメーターがある場合、これは理想的なソリューションです)。単一パラメータの場合は、 varyByParam="parameter1"を使用します

返事が遅れて申し訳ありません。今この質問を見ました。

于 2014-03-26T13:31:37.267 に答える