2010-02-14 6 views
1

VaryByParam 특성을 사용할 수 있다는 것을 알고 있지만 정확히 무엇을 목표로하는지 알 수 없습니다.ASP.net은 특정 쿼리 문자열이있는 페이지를 캐시하지 않습니다.

페이지의 다른 버전이 쿼리 문자열을 기반으로 캐시됩니다.

예를 들어 Page.aspx? ID = Tom에는 자체 캐시 버전이 있고 ID = Arnold에는 다른 ID가 있습니다. 이제 내가하고 싶은 것은 Arnold를 전혀 캐시하지 않는 것입니다. 쿼리 문자열이 Tom 인 경우에만 페이지를 캐시하고 싶습니다.

아이디어가 있으십니까?

답변

0
<Extension()> _ 
    Public Sub CacheOutput(ByVal Page As Page, ByVal Minutes As Integer) 
     Page.Response.Cache.SetExpires(Date.Now.AddMinutes(Minutes)) 
     Page.Response.Cache.SetCacheability(HttpCacheability.Server) 
     Page.Response.Cache.SetValidUntilExpires(True) 
    End Sub 

이것은 작동합니다. 쿼리 문자열 또는 POST 매개 변수가있는 페이지의 모든 버전은 캐시되지 않습니다.

0

VaryByCustom을 사용하고 Application 클래스에서 GetVaryByCustomString 메서드를 재정의하려고합니다.

1

C#

public static void cacheOutput(Page page, double minutes) 
    { 
     page.Response.Cache.SetExpires(DateTime.Now.AddMinutes(minutes)); 
     page.Response.Cache.SetCacheability(HttpCacheability.Server); 
     page.Response.Cache.SetValidUntilExpires(true); 
    } 

그것은 분 동안 두 번을하는 것이 좋습니다하십시오. 좋은 해결책! Thx!

관련 문제