방법: 파일 종속성을 사용하여 페이지 출력 캐시
업데이트: 2007년 11월
파일이 변경될 경우 출력 캐시에서 페이지를 제거할 수도 있습니다. 프로세스를 많이 사용하고 XML 파일을 출력하는 보고서에서 내용을 가져오는 페이지를 예로 들 수 있습니다. XML 파일이 변경될 경우에만 페이지를 다시 처리해야 합니다. 필요한 경우에만 다시 처리되도록 제한하려면 페이지의 캐시 정책이 단일 파일에 종속되도록 설정하면 됩니다. 필요한 경우, 캐시된 페이지가 둘 이상의 파일에 종속되도록 설정할 수 있습니다.
참고: |
---|
RemoveOutputCacheItem 메서드를 호출하여 페이지를 출력 캐시에서 명시적으로 제거할 수 있습니다. 이 작업은 응용 프로그램의 필요에 따라 Global.asax 파일, 사용자 지정 ASP.NET 서버 컨트롤 또는 페이지에서 수행할 수 있습니다. |
캐시된 페이지 출력이 단일 파일에 종속되게 하려면
페이지 출력 캐싱의 설정을 선언적이나 프로그래밍 방식으로 지정합니다. 자세한 내용은 방법: ASP.NET 페이지 캐싱에 대한 만료 값 설정, 페이지의 캐시 가능성 설정 및 여러 버전의 페이지 캐싱을 참조하십시오.
페이지 코드에서 AddFileDependency 메서드를 호출합니다. 그런 다음 종속성을 만드는 파일의 경로를 메서드의 filename 매개 변수로 전달합니다.
다음 코드 예제에서는 TextFile1.txt 파일에 파일 종속성을 설정합니다. 이 파일이 변경되면 페이지 출력이 캐시에서 제거됩니다.
protected void Page_Load(object sender, EventArgs e) { string fileDependencyPath = Server.MapPath("TextFile1.txt"); Response.AddFileDependency(fileDependencyPath); // Set additional properties to enable caching. Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); }
Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles Me.Load Dim fileDependencyPath As String = _ Server.MapPath("TextFile1.txt") Response.AddFileDependency(fileDependencyPath) ' Set additional properties to enable caching. Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) End Sub
참고: ASP.NET 사용자 정의 컨트롤에서는 이러한 메서드를 사용할 수 없습니다. 그러나 @ OutputCache 지시문을 지정하는 사용자 정의 컨트롤에서는 파일 종속성을 만들어 Dependency 속성에 할당할 수 있습니다.
캐시된 페이지 출력이 파일 그룹에 종속되게 하려면
페이지 출력 캐싱의 설정을 선언적이나 프로그래밍 방식으로 지정합니다. 자세한 내용은 방법: ASP.NET 페이지 캐싱에 대한 만료 값 설정, 페이지의 캐시 가능성 설정 및 여러 버전의 페이지 캐싱을 참조하십시오.
페이지 코드에서 페이지가 종속되는 파일의 경로가 포함된 ArrayList 또는 String 배열을 만듭니다.
AddFileDependencies 메서드를 호출한 다음 이 배열을 filenames 매개 변수로 전달합니다.
다음 코드 예제에서는 TextFile1.txt 파일과 XMLFile1.xml 파일에 대한 파일 경로의 문자열 배열을 만들고 페이지 출력이 이 두 파일에 종속되도록 설정합니다. 두 파일 중 하나가 수정되면 페이지 출력이 캐시에서 제거됩니다.
protected void Page_Load(object sender, EventArgs e) { string[] fileDependencies; string fileDependency1 = Server.MapPath("TextFile1.txt"); string fileDependency2 = Server.MapPath("XMLFile1.xml"); fileDependencies = new String[] { fileDependency1, fileDependency2 }; Response.AddFileDependencies(fileDependencies); }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim fileDependencies() As String Dim fileDependency1 As String = Server.MapPath("TextFile1.txt") Dim fileDependency2 As String = Server.MapPath("XMLFile1.xml") fileDependencies = New String() {fileDependency1, _ fileDependency2} Response.AddFileDependencies(fileDependencies) End Sub