我缓存了 ASP.NET MVC 网站上所有可能的东西,它运行良好。现在我创建了一个 API,其中调用转到控制器操作。(http://mysite.com/topics/latest.json)
API 能够以不同的格式(json、xml、rss)返回结果。返回的数据在 Action 中加载:
[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 并且没有视图,因此我无法以这种方式解决问题。
你对解决这个问题有什么建议?