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を設定しただけでビューがないため、この方法で問題を解決することはできません。
この問題を解決するためのあなたの提案は何ですか?