>> 출처: https://www.microsoft.com/korea/technet/iis/tips/asptips17_21.mspx



21. 브라우저 및 프록시 캐싱을 사용하십시오.


기본적으로 ASP는 브라우저 및 프록시 캐싱 기능을 사용하지 않습니다. 그 이유는 ASP 페이지의 경우 잠재적으로 시간이 중요시되는 정보를 갖는 동적 페이지의 속성을 가지고 있기 때문입니다. 그러나 볼 때마다 새로 고칠 필요가 없는 페이지에서는 브라우저 및 프록시 캐싱 기능을 사용해야 합니다. 이렇게 하면 브라우저 및 프록시에서 일정 기간 동안 "캐시된" 페이지 복사본을 사용할 수 있으며, 그 기간은 사용자가 조절할 수 있습니다. 또한 서버에 걸리는 로드가 크게 줄어들며 성능이 훨씬 나아집니다.

 

어떤 종류의 동적 페이지를 캐시할 수 있습니까? 다음은 캐시 가능한 페이지의 예입니다.

 

  • 날씨가 5분마다 업데이트되는 날씨 페이지 
  • 신문 기사나 보도 자료를 나열하고 하루에 두 번 업데이트되는 홈 페이지 
  • 뮤추얼 펀드 실적을 나열하고 기초 통계 자료가 서너 시간마다 업데이트되는 페이지 

브라우저 또는 프록시 캐싱 기능을 사용하면 웹 서버에 기록되는 방문 횟수가 줄어든다는 점에 주의하십시오. 모든 페이지 화면이나 게시 알림 횟수를 정확하게 측정하기 위해 브라우저 및 프록시 캐싱 기능을 해제해야 할 수도 있습니다.

 

브라우저 캐싱 기능은 웹 서버로부터 브라우저로 보내지는 HTTP의 "Expires" 헤더에서 제어됩니다. ASP에서는 두 가지 간단한 메커니즘을 통해 이 헤더를 전송합니다. 첫번째 메커니즘은 향후 일정 시간(분 단위)이 경과한 후 페이지를 만료하도록 Response.Expires 속성을 설정하는 것입니다. 다음은 10분이 경과한 후 내용을 만료하도록 브라우저에게 지시하는 예입니다.

 

<% Response.Expires = 10 %>

 


Response.Expires를 음수나 0으로 설정하면 캐싱 기능이 사용되지 않습니다. 서버 시계와 브라우저 사이의 불일치 문제를 해결하려면 -1000 등과 같이 하루보다 약간 적은 시간을 의미하는 음수를 사용해야 합니다. 두번째 메커니즘은 Response.ExpiresAbsolute를 사용하여 해당 내용을 만료할 시간을 설정하는 것입니다.

 

<% Response.ExpiresAbsolute = #May 31,2001 13:30:15# %>

 


Response 개체를 사용하여 만료 날짜를 설정하는 대신에 <META> 태그를 HTML에 사용할 수도 있습니다. 이 태그는 일반적으로 HTML 파일의 <HEAD> 섹션에 놓입니다. 아래의 지시어는 일부 브라우저에서는 인식되지만 프록시에서는 인식되지 않습니다.

 

<META HTTP-EQUIV="Expires" VALUE="May 31,2001 13:30:15">

 


끝으로, Response.CacheControl 속성을 사용하여 HTTP 프록시에서 해당 내용을 캐시할 수 있는지 여부를 나타낼 수 있습니다. 이 속성을 "Public"으로 설정하면 프록시는 해당 내용을 캐시합니다.

 

<% Response.CacheControl = "Public" %>

 


기본적으로 이 속성은 "Private"로 설정됩니다. 사용자 고유의 데이터를 보여주는 페이지인 경우에는 프록시가 다른 사용자의 페이지를 제공할 수도 있으므로 프록시 캐싱 기능을 사용하면 안됩니다.


 

22. 가능하면 Response.Redirect가 아닌 Server.Transfer를 사용하십시오. 


Response.Redirect는 다른 페이지를 요청하도록 브라우저에게 지시합니다. 이 함수는 사용자를 로그온이나 오류 페이지로 리디렉션하는데 간혹 사용됩니다. 리디렉션은 새 페이지 요청을 강제로 수행하기 때문에, 결과적으로 볼 때 브라우저가 웹 서버에 두 번 왕복 이동해야 하며 웹 서버가 추가 요청을 처리해야 합니다. IIS 5.0에서는 동일한 서버에 있는 다른 ASP 페이지에게 실행을 전송하는 Server.Transfer 함수를 새로 도입했습니다. 이 함수를 사용하면 브라우저 대 웹 서버 왕복 이동이 추가로 발생하지 않기 때문에, 결과적으로 볼 때 사용자의 응답 시간이 빨라지며 전체 시스템 성능도 향상됩니다. 자세한 내용은 Server.Transfer 및 Server.Execute에 대해 설명하는 New Directions in Redirection을 참조하십시오. 


또한 IIS 5.0 및 ASP 3.0의 새 기능에 대한 자세한 목록은 Leveraging ASP in IIS 5.0을 참조하십시오.

 

 

23. 디렉터리 URL에 후행 슬래시를 사용하십시오.


여기에 관련된 팁은 디렉터리를 나타내는 후행 슬래시(/)를 URL에 사용해야 한다는 것입니다. 후행 슬래시가 생략된 경우, 브라우저는 서버에게 디렉터리를 요청합니다. 그런 다음 브라우저가 슬래시를 URL에 추가하여 두번째 요청을 보내면 서버가 해당 디렉터리의 기본 문서로 응답하거나, 기본 문서가 없어서 디렉터리 찾아보기가 사용된 경우 디렉터리 목록으로 응답합니다. 슬래시를 추가하면 불필요한 첫번째 왕복 이동 동작이 발생하지 않습니다. 사용자가 쉽게 읽을 수 있도록, 표시되는 이름에서 후행 슬래시를 생략할 수도 있습니다.

 

예를 들면, 다음과 같습니다.

 

<a href="http://msdn.microsoft.com/workshop/" title="MSDN Web

Workshop">http://msdn.microsoft.com/workshop</a>

 


이 팁은 웹 사이트의 홈 페이지를 가리키는 URL에도 적용됩니다.<a href="http://msdn.microsoft.com">이 아닌 <a href="http://msdn.microsoft.com/">을 사용해 보십시오.

 

 

24. 서버 변수 사용을 피하십시오.


서버 변수에 액세스하면 웹 사이트가 서버에게 특수한 요청을 보내어 요청한 변수 뿐만 아니라 모든 서버 변수들을 모으게 됩니다. 이는 불필요한 파일들을 넣어둔 창고에 있는 폴더에서 특정 항목을 찾는 경우와 비슷한데, 여기서 한 개의 필요한 항목을 찾으려면 원하는 항목에 액세스하기 전에 먼저 창고에 들어가서 해당 폴더를 찾아야 합니다. 이러한 상황은 서버 변수를 요청할 때 발생하는 상황과 동일합니다. 방문 횟수(performance hit)는 맨 처음 서버 변수를 요청할 때 추가됩니다. 나중에 다른 서버 변수를 얻기 위해 보내지는 요청은 방문 횟수(performance hit)에 추가되지 않습니다.

 

Request("Data")와 같이 정식 Request 개체가 아닌 개체에 액세스하면 안됩니다. Request.Cookies, Request.Form, Request.QueryString 또는 Request.ClientCertificate에 들어 있지 않은 항목에 대해서는 Request.ServerVariables에 대한 암시적 호출이 발생합니다. Request.ServerVariables 컬렉션 속도는 다른 컬렉션 속도보다 매우 느립니다.

 

 

25. 최신 구성 요소로 업그레이드하십시오. 


시스템 구성 요소들은 자주 변경되므로 최신 구성 요소로 업그레이드해야 합니다. 가장 좋은 방법은 Windows 2000으로 업그레이드하고 IIS 5.0, ADO 2.5, MSXML 2.5, Internet Explorer 5.0, VBScript 5.1 및 JScript 5.1로 업그레이드하는 것입니다. IIS 5.0 및 ADO 2.5는 다중 프로세스 컴퓨터에서 놀랄만한 성능을 제공합니다. Windows 2000에서는 ASP가 네 개 이상의 프로세서로 완벽하게 확장되지만, IIS 4.0에서는 ASP가 두 개 이상의 프로세서로 제대로 확장되지 않았습니다. 응용 프로그램에 사용된 스크립트 코드와 ADO가 많을수록 Windows 2000으로 업그레이드한 후 얻게 될 성능상의 장점이 많아집니다. 


Windows 2000으로 업그레이드할 수 없는 경우에는 SQL Server, ADO, VBScript 및 JScript, MSXML, Internet Explorer, Windows NT 4 서비스 팩의 최신 릴리스로 업그레이드할 수 있습니다. 이렇게 하면 안정성이 향상되는 동시에 성능도 좋아집니다.




Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]