2010-03-01 3 views
4

ASP.NET MVC 웹 사이트에서 가능한 모든 것을 캐시하고 완벽하게 작동합니다. 이제 호출이 컨트롤러 작업으로 이동하는 API를 만들었습니다. (http://mysite.com/topics/latest.json)ASP.NET MVC OutputCache JSONP

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 및 기타). 하지만 이들은 모두 Views 내에서이 주제를 처리합니다. 방금 ViewData.Model을 설정하고 뷰가 없으므로이 방법으로 문제를 해결할 수는 없습니다.

이 문제를 해결하기위한 제안 사항은 무엇입니까?

답변

3

항상 미리 정의 된 콜백 이름을 사용할 수 있습니다. jQuery.ajax과 같은 클라이언트를 사용하면 콜백 매개 변수의 이름을 지정할 수 있습니다.