4

ASP.NET MVC Webサイトで可能なすべてのものをキャッシュし、完全に機能します。これで、呼び出しがコントローラーアクションに送られるAPIを作成しました。(http://mysite.com/topics/latest.json

APIは、さまざまな形式(json、xml、rss)で結果を返すことができます。返すためのデータは、アクションにロードされます。

[ResponseFilter]
public class HotTopicsController : Controller
{

   [OutputCache(Duration = 60, VaryByParam = "none")]
   public ActionResult Latest()
   {
      ViewData.Model = MyService.GetRepository().ApiViewData().Topics().Latest();

      return View();
   }
}

ResponseFilterは、正しい形式(json、rss、xml)でデータを返す役割を果たします。

別のドメインからJSONリクエストを行うことはできないため(他の人がAPIを利用できるようにしたい)、JSONPを使用する必要があります。JSONPにはコールバックセットが必要です。

応答でコールバックの名前を設定する必要性私はOutputCacheでデフォルトのキャッシュを行うことができません。

ドーナツキャッシングに関する記事を知っています(Phil Haacked:http ://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspxなど)。しかし、それらはすべてビュー内でこのトピックを処理します。ViewData.Modelを設定しただけでビューがないため、この方法で問題を解決することはできません。

この問題を解決するためのあなたの提案は何ですか?

4

2 に答える 2

3

定義済みのコールバック名をいつでも使用できます。jQuery.ajaxなどのクライアントでは、コールバック パラメータの名前を指定できます。

于 2010-03-01T16:55:23.660 に答える
0

1 つの答えは、GetJSON の代わりに GetScript を使用することです。ここでブログを書きました:http://mfriis.blogspot.com/2012/03/caching-jsonp-requests-in-mvc3.html

ただし、私のソリューションは MVC3 に基づいています。

于 2012-03-20T11:10:23.610 に答える