2013-02-24 3 views
2

은 일반적으로 우리가캐싱 등의 URL이있을 수 있습니다 QueryString을가

<%@ OutputCache Duration="15" VaryByParam="search" %> 

처럼 Request.QueryString을 값에 대한 의존도를 캐싱을하고 할 수 있습니다 값 대신 BY 파람 비바리 같은 :

http://www.demo.com/default.aspx?search=name 

하지만 내 응용 프로그램에서 나는 내가 좋아하는 제품의 ID를 전달하고 ASP.NET 4.0 라우팅을 사용하고 있습니다 :

http://www.demo.com/searchdetails/40563 
을 0

정도에

http://www.demo.com/searchdetails/40564 

.....이 경우

가 나는 페이지의 종속성을 확인하는 방법이 경우

Page.Route.Value["product_id"] 

와 제품 ID 뭔가에 액세스 이 경로 값에.

나는 캐싱에 익숙하지 않기 때문에 같은 것을 많이 모른다.

사용자 정의 캐싱을 수행해야합니까?

답변

2

VaryByCustom을 사용해야한다고 생각합니다. 이 같은 뭔가 :

<%@ OutputCache Duration="15" VaryByParam="None" VaryByCustom="productIdInUrl" %> 

그리고는 Global.asax 파일에 사용자 정의 필터를 추가 :

public override string GetVaryByCustomString(HttpContext context, 
string arg) 
{ 
    if(arg == "productIdInUrl") 
    { 
     return context.Request.RawUrl; 
    } 
    return base.GetVaryByCustomString(context, arg); 
} 

이것은 당신의 URL뿐만 아니라 제품 ID 모두에 다를 것이다. 당신이 뭔가 더 많은 영리한 일을 할 수있는 요청 개체에 대한 더 많은 작업을 할 수있을 것 같아요