방법: 웹 서비스의 서버측 출력 캐싱을 사용하도록 설정
다음 코드 예제에서는 웹 서비스 메서드의 CacheDuration 속성을 사용하여 60초 동안 출력 캐싱을 지정하는 방법을 설명합니다. 이 예제에서는 Design Guidelines for XML Web Services Created Using ASP.NET 항목에서 설명하는 지침 중 하나를 보여 줍니다.
ASP.NET 2.0 웹 서비스 응용 프로그램에서 출력 캐싱에 영향을 미칠 수 있는 두 가지 문제가 있습니다.
ASP.NET 2.0에서 테스트 페이지의 HTTP 메서드가 GET에서 POST로 변경되었습니다. 그러나 대부분의 경우 POST는 캐시되지 않습니다. ASP.NET 2.0 웹 서비스 응용 프로그램에서 테스트 페이지를 변경하여 GET을 사용하면 캐싱이 제대로 작동합니다.
또한 HTTP는 사용자 에이전트(브라우저 또는 호출 응용 프로그램)가 "Cache-Control"을 "no-cache"로 설정하여 서버 캐싱을 재정의할 수 있어야 함을 나타냅니다. 따라서 ASP.NET 응용 프로그램에서는 "no-cache" 헤더를 발견하는 경우 캐시된 결과를 무시합니다.
예제
<%@ WebService Language="C#" Class="MathService" %>
using System;
using System.Web.Services;
public class MathService : WebService {
[WebMethod(CacheDuration=60)]
public float Add(float a, float b)
{
return a + b;
}
[WebMethod(CacheDuration=60)]
public float Subtract(float a, float b)
{
return a - b;
}
[WebMethod(CacheDuration=60)]
public float Multiply(float a, float b)
{
return a * b;
}
[WebMethod(CacheDuration=60)]
public float Divide(float a, float b)
{
if (b==0) return -1;
return a / b;
}
}
<%@ WebService Language="VB" Class="MathService" %>
Imports System
Imports System.Web.Services
Public Class MathService
Inherits WebService
<WebMethod(CacheDuration := 60)> _
Public Function Add(a As Single, b As Single) As Single
Return a + b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Subtract(a As Single, b As Single) As Single
Return a - b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Multiply(a As Single, b As Single) As Single
Return a * b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Divide(a As Single, b As Single) As Single
If b = 0 Then
Return - 1
End If
Return a / b
End Function
End Class
참고 항목
작업
방법: 웹 서비스 클라이언트에서 출력 캐싱을 사용하도록 설정
개념
ASP.NET을 사용하여 만든 XML Web services에 대한 디자인 지침
Copyright © 2007 by Microsoft Corporation. All rights reserved.