Office SharePoint Server 2007의 캐싱

업데이트 날짜: 2009년 4월

적용 대상: Office SharePoint Server 2007

 

마지막으로 수정된 항목: 2015-03-09

이 문서의 내용

  • 출력 캐싱

  • 개체 캐싱

  • BLOB에 대한 디스크 기반 캐싱

Microsoft Office SharePoint Server 2007에는 웹 사이트의 성능을 최대화하는 고급 캐싱 기능이 포함되어 있습니다. 이 문서에서는 사용 가능한 여러 가지 캐싱 유형 및 구체적인 배포 요구 사항에 따라 캐싱을 최적화하는 방법에 대해 설명합니다.

다음 표에서는 사용 가능한 캐싱 유형 및 각 유형이 구현되는 위치를 보여 줍니다.

사용할 캐싱 유형 위치 참고

출력 캐싱 및 캐시 프로필

개별 페이지 수준

새 콘텐츠를 자주 표시하지 않으며 액세스 빈도가 높은 웹 사이트에 적합합니다.

개체 캐싱

개별 웹 파트 컨트롤, 필드 컨트롤 및 콘텐츠 수준

교차 목록 쿼리 캐싱 및 탐색 캐싱이 포함됩니다.

BLOB(Binary Large Object)에 대한 디스크 기반 캐싱

개별 BLOB 수준

BLOB로 저장되는 .gif, .jpg, .js, .css 등의 이미지, 사운드 및 코드 파일이 지원됩니다.

출력 캐싱

Office SharePoint Server 2007에서는 ASP.NET 2.0에 포함된 출력 캐싱 기술을 사용하여 페이지 콘텐츠를 제공할 시기와 방법을 관리합니다. 출력 캐싱을 적절하게 사용하면 처리량 및 사용자 응답 시간이 크게 향상됩니다.

사이트에서 ASP.NET을 사용하는 경우 각 웹 페이지가 런타임에 생성하는 HTML 태그가 지정된 캐시 프로필에 따라 ASP.NET 출력 캐시에 캐시됩니다. 액세스 빈도가 높은 웹 사이트에서 자주 액세스되는 페이지를 한 번에 1분씩만 캐시해도 처리량이 크게 향상됩니다. 페이지가 출력 캐시에 캐시되어 있으면 캐시에 지정된 기간 동안에는 사용 권한이 비슷한 사용자가 이후에 해당 페이지를 요청할 때 페이지를 만든 코드나 컨트롤이 실행되지 않고 출력 캐시에서 페이지가 제공됩니다.

참고

사이트 모음에 대해 Office SharePoint Server 게시 인프라 기능이 활성화되어 있고 사이트에 대해 Office SharePoint Server 게시 기능이 활성화되어 있는 경우에만 사이트 또는 사이트 모음에서 출력 캐싱을 사용할 수 있습니다. 사이트 모음에 대한 출력 캐싱을 활성화하고 구성하려면 사이트 모음의 사이트 설정 페이지에서 사이트 모음 출력 캐시를 클릭하고 사이트의 사이트 설정 페이지에서 사이트 출력 캐시를 클릭합니다. 사이트 모음에 대해 Office SharePoint Server 게시 인프라 기능이 활성화되어 있지 않고 사이트에 대해 Office SharePoint Server 게시 기능이 활성화되어 있지 않으면 사이트 설정 페이지에 사이트 모음 출력 캐시사이트 출력 캐시 링크가 나타나지 않으며 출력 캐싱을 활성화하거나 구성할 수 없습니다.

   

출력 캐싱을 활성화하는 방법에 대한 자세한 내용은 출력 캐싱 및 캐시 프로필 (영문)(https://go.microsoft.com/fwlink/?linkid=78928&clcid=0x412)을 참조하십시오.

출력 캐싱 고려 사항

페이지 및 페이지 항목 렌더링의 성능을 높이기 위해 출력 캐싱을 사용하기 전에 출력 캐싱 구현의 장점과 제한 사항을 고려해야 합니다.

장점은 다음과 같습니다.

  • 출력 캐싱은 콘텐츠가 자주 업데이트되지 않는 웹 사이트에 적합합니다. 이러한 환경에서는 데이터베이스에 액세스하거나 초기에 웹 페이지의 HTML 태그를 만든 코드 또는 컨트롤을 다시 실행하지 않고도 캐시된 출력을 여러 사용자에게 표시할 수 있습니다.

  • 출력 캐싱은 익명 사용자 및 인증된 사용자에 대해 사용할 수 있지만 액세스가 익명인 경우에 가장 효율적입니다. 따라서 웹 사이트의 일부 또는 전체 사이트에 대해 적절한 경우에는 항상 익명 사용자 액세스를 허용하는 것이 좋습니다.

제한 사항은 다음과 같습니다.

  • 출력 캐싱에는 캐시된 각 페이지의 HTML 태그를 캐시하는 추가 메모리가 사용됩니다. 시스템 페이징이나 기타 메모리 문제를 피하려면 실제 메모리를 충분히 설치해야 합니다.

  • 둘 이상의 웹 서버를 사용하는 경우 출력 캐싱으로 인해 일관성에 문제가 발생할 수 있습니다. 예를 들어 각 요청에 대해 업데이트를 확인하지 않도록 캐시 프로필을 구성하고 원래 페이지가 업데이트된 후 60초가 지날 때까지 출력 캐시의 웹 페이지 버전에 대한 변경 내용을 무시하도록 프로필을 구성할 수 있습니다. 이렇게 구성한 경우 토폴로지에 웹 서버가 두 대이고 서버 중 하나에서 페이지가 렌더링된 후 다음 요청이 60초 이내에 두 번째 서버에 라우팅되면 사용자의 요청을 라우팅하는 데 사용되는 부하 분산에 따라 사용자에게 콘텐츠가 일관성 없이 표시될 수 있습니다. 그러나 캐시 프로필에서 변경 내용 확인을 활성화하면 출력 캐싱의 효율성이 저하됩니다.

  • 사이트 모음에 대한 쓰기 권한이 있는 사용자에 대해 출력 캐싱을 활성화하면 출력이 캐시된 페이지가 만료될 때까지 이러한 사용자에게 해당 사이트 모음의 웹 페이지에서 가장 최신 상태의 데이터가 표시되지 않을 수 있습니다. 일반적으로는 이로 인해 사용자가 현재 변경하거나 보고 있는 웹 페이지의 콘텐츠가 직접 영향을 받지 않지만 목록이나 라이브러리의 롤업 데이터(예: 문서 라이브러리 웹 파트에서 표시되는 데이터)는 영향을 받을 수 있습니다. 따라서 쓰기 권한이 있는 사용자가 모든 최신 정보를 볼 수 있게 하려면 읽기 전용 권한이 있는 사용자에 대해서만 출력 캐싱을 활성화해야 합니다.

출력 캐싱 동작

다음 수준에서 출력 캐싱의 동작을 지정할 수 있습니다.

  • 사이트 모음

  • 사이트

  • 페이지 레이아웃

특정 팜, 사이트 모음 또는 사이트의 관리자는 자신에게 관리 권한이 있는 수준에서 다양한 캐시 프로필을 적용하여 캐싱 동작을 최적화할 수 있습니다. 예를 들어 사이트의 홈 페이지가 가장 자주 액세스되는 경우 홈 페이지에 고유 페이지 레이아웃을 사용하면 해당 고유 페이지 레이아웃에 특수한 캐시 프로필을 적용하고 전체 사이트 모음의 캐싱 동작을 재정의할 수 있습니다. 또는 페이지 레이아웃의 캐시 프로필을 구성하여 캐시 기간을 늘릴 수 있습니다. 이렇게 하면 성능보다 적시성이 중요한 경우 홈 페이지 데이터의 적시성을 최적화할 수 있습니다. 시스템의 기타 페이지에는 다른 캐시 프로필을 사용하여 캐시 기간을 줄일 수 있습니다.

검색 결과 캐싱

사용자 인증이 포함된 환경에서는 검색 결과를 캐시할 수 없습니다. 이렇게 하면 중요한 기밀 정보가 권한 없는 사용자에게 노출될 수 있습니다. 검색 쿼리에서는 결과 집합을 필터링하여 현재 사용자가 사용할 수 있는 정보만 표시합니다. 그러나 검색 결과를 캐시하면 결과 집합을 필터링하는 코드가 무시되므로 권한 없는 사용자가 자신에게 액세스 권한이 없는 결과를 보게 될 가능성이 있습니다. 반면 익명 환경에서는 모든 검색 결과가 인증되지 않은 요청의 결과이므로 이러한 문제가 발생하지 않습니다.

사이트 모음에서 출력 캐싱을 활성화한 경우 다음 절차를 수행하여 검색 결과 페이지 레이아웃을 비활성화할 수 있습니다.

검색 결과 페이지 레이아웃 비활성화

  1. 사이트 모음의 최상위 사이트에서 사이트 작업 메뉴에 있는 사이트 설정을 가리킨 다음 모든 사이트 설정 수정을 클릭합니다.

  2. 사이트 설정 페이지의 사이트 모음 관리 섹션에서 사이트 모음 출력 캐시를 클릭합니다.

  3. 사이트 모음 출력 캐시 설정 페이지에서 페이지 레이아웃이 다른 페이지 출력 캐시 프로필을 사용할 수 있습니다. 확인란을 선택한 다음 확인을 클릭합니다.

  4. 사이트 설정 페이지의 갤러리 섹션에서 마스터 페이지 및 페이지 레이아웃을 클릭합니다.

  5. 마스터 페이지 갤러리 페이지에서 SearchResults.aspx를 가리키고 나타나는 화살표를 클릭한 다음 나타나는 메뉴에서 속성 편집을 클릭하고 나타나는 대화 상자에서 확인을 클릭합니다.

  6. 마스터 페이지 갤러리: SearchResults 페이지의 인증된 캐시 프로필 목록에서 사용 안 함을 클릭한 다음 확인을 클릭합니다.

  7. 마스터 페이지 갤러리 페이지에서 SearchResults.aspx를 가리키고 나타나는 화살표를 클릭한 다음 나타나는 메뉴에서 체크 인을 클릭합니다.

  8. 체크 인 페이지에서 **주 버전(게시)**을 선택한 다음 확인을 클릭합니다. 해당 특정 페이지 레이아웃을 사용하는 검색 결과가 더 이상 캐시되지 않습니다.

ASP.NET 전용 바이트 제한

출력 캐싱을 사용하는 경우 전용 바이트에 대한 ASP.NET 2.0의 기본 제한을 확장하는 것이 좋습니다. 이 제한은 ASP.NET에서 출력 캐시를 플러시할 시점을 알려 줍니다. 너무 일찍 플러시하면 성능이 불필요하게 저하될 수 있습니다. 자세한 내용은 caching 요소에 대한 cache 요소(ASP.NET 설정 스키마) (영문)(https://go.microsoft.com/fwlink/?linkid=78934&clcid=0x412)를 참조하십시오.

캐시된 페이지 버전

특정 웹 페이지는 사용자 또는 기타 비즈니스 논리에 따라 약간 다른 버전을 표시할 수 있습니다. 지원되는 프로그래밍 가능 API를 사용하여 항목을 서로 다르게 캐시하면 출력 캐싱 기능을 확장할 수 있습니다. 자세한 내용은 방법: VaryByCustom 이벤트 처리기를 사용하여 캐싱 확장 (영문)(https://go.microsoft.com/fwlink/?linkid=78935&clcid=0x412)을 참조하십시오.

출력 캐싱 및 콘텐츠 쿼리 웹 파트 RSS 피드

콘텐츠 쿼리 웹 파트를 통해 표시되는 결과의 RSS 피드를 제공할 수 있습니다. 이 RSS 피드는 서버의 .aspx 페이지에서 생성하며, 이때 콘텐츠 쿼리 웹 파트에 표시되는 것과 같은 결과에 따라 RSS 피드 XML이 생성됩니다.

RSS 클라이언트는 30분 등의 주기에 따라 서버에서 RSS 피드를 요청하는 경우가 많으므로 RSS 피드가 정상적으로 생성되어야 합니다. 따라서 RSS 피드 .aspx 페이지에서는 출력 캐싱을 구현합니다. .aspx 파일의 소스에는 다음과 같은 줄이 있습니다.

<%@ OutputCache Duration="300" VaryByParam="xsl;web;page;wp" VaryByCustom="rights;feedresults"%>

따라서 기본적으로 시스템에서는 콘텐츠 쿼리 RSS 피드를 5분(300초) 동안 캐시하고, 서로 다른 각 콘텐츠 쿼리 웹 파트에 대해 RSS 피드의 고유 버전을 캐시하고, 사용 권한 및 피드 결과가 서로 다른 사용자에 대해 RSS 피드의 고유 버전을 캐시합니다.

이 출력 캐싱을 사용자 지정하려면 같은 논리를 구현하지만 출력 캐시 설정이 다른 피드 .aspx 페이지를 직접 만듭니다. 이렇게 하면 콘텐츠 쿼리 웹 파트에서 기본 페이지 대신 사용자 지정 피드 .aspx 페이지를 참조할 수 있습니다.

또한 사이트의 다른 중요한 페이지에서 동일한 보안 문제가 발생할 수 있는 경우 전체 검색 센터 사이트에서 출력 캐시를 비활성화할 수 있습니다. 검색 센터 사이트에서 출력 캐시를 비활성화하려면 다음 절차를 수행합니다.

검색 센터 사이트에서 출력 캐시 비활성화

  1. 사이트 모음의 최상위 사이트에서 사이트 작업 메뉴에 있는 사이트 설정을 가리킨 다음 모든 사이트 설정 수정을 클릭합니다.

  2. 사이트 설정 페이지의 사이트 모음 관리 섹션에서 사이트 모음 출력 캐시를 클릭합니다.

  3. 사이트 모음 출력 캐시 설정 페이지의 페이지 출력 캐시 정책 섹션에서 게시 사이트가 다른 페이지 출력 캐시 프로필을 사용할 수 있습니다. 확인란을 선택한 다음 확인을 클릭합니다.

  4. 위쪽 탐색 모음에서 검색 탭을 클릭합니다.

  5. 검색 센터 홈 페이지의 사이트 작업 메뉴에서 사이트 설정을 가리킨 다음 모든 사이트 설정 수정을 클릭합니다.

  6. 검색 센터 사이트의 사이트 설정 페이지에 있는 사이트 관리 섹션에서 사이트 출력 캐시를 클릭합니다.

  7. 게시 사이트 출력 캐시 설정 페이지의 인증된 캐시 프로필 섹션에서 프로필 "사용 안 함"을(를) 상속합니다. 옵션 단추를 선택합니다.

  8. 필요에 따라 모든 하위 사이트에서 인증된 출력 캐시를 비활성화하려면 모든 하위 사이트에 이 설정 적용 확인란을 선택합니다.

개체 캐싱

Office SharePoint Server 2007에서는 탐색 데이터 및 교차 목록 쿼리를 통해 액세스된 데이터 등의 특정 페이지 항목을 캐시할 수 있습니다. 페이지 항목을 캐시하면 페이지를 렌더링할 때마다 데이터베이스에서 필드 데이터를 검색할 필요가 없습니다. 또한 캐싱 시스템에서는 페이지에 있는 웹 파트 컨트롤의 데이터를 제외하고 페이지의 전체 필드 데이터를 캐시합니다.

개체 캐시 조정

개체 캐싱의 크기는 기본적으로 사이트 모음당 100MB로 설정되지만 각 사이트 모음에 대해 이 설정을 웹 사이트의 특징에 맞게 수정할 수 있습니다. 일련의 성능 카운터를 사용하여 개체 캐시의 크기를 조정할 수 있습니다. 성능 카운터 개체의 이름은 SharePoint Publishing Cache 개체입니다. 캐시 적중률 및 개체 삭제 카운터의 변동에 따라 개체 캐시 크기를 적절히 설정할 수 있습니다. 이 제한을 설정할 때는 다음과 같은 사항을 고려해야 합니다.

  • 200MB 등의 낮은 값에서 시작하여 캐시 적중률과 개체 삭제 카운터를 모니터링합니다. 일반적으로 적중률이 90%를 넘고 개체 삭제 비율이 낮은 경우 현재 크기가 적절한 것입니다. 그러나 주요 작업에 대한 사용자 응답 시간도 측정하여 이 설정을 조정해야 합니다.

  • 크기를 너무 크게 설정하면 ASP.NET 출력 캐시(사용하는 경우) 등의 다른 캐시에 사용할 수 있는 귀중한 메모리가 낭비될 수 있습니다. 콘텐츠 쿼리 웹 파트와 같은 특정 웹 파트에서는 XSLT 스타일시트를 출력 캐시에 저장합니다. 개체 캐시 크기가 너무 크게 설정되어 있으면 ASP.NET에서 출력 캐시 메모리를 플러시하여 여유 공간을 확보할 수 있으며 이러한 경우 CPU 사용량이 증가됩니다. 32비트 운영 체제에서 실행되는 시스템에서는 각 작업자 프로세스의 응용 프로그램 메모리 공간이 2GB로 제한되므로 이 사항이 특히 중요합니다. 개체 캐시 제한을 너무 크게 설정하면 IIS 작업자 프로세스(w3wp)에서 메모리가 부족해질 수 있습니다.

교차 목록 쿼리 캐싱

개체 캐시는 교차 목록 쿼리의 일부로 검색되는 항목을 캐시하는 데도 사용됩니다. 이러한 쿼리는 사이트 모음의 다양한 목록과 사이트에 있는 항목을 집계합니다. 이러한 쿼리는 콘텐츠 쿼리 웹 파트에서 가장 일반적으로 사용하며, 교차 목록 쿼리를 사용할 때마다 데이터베이스 서버로 왕복해야 합니다. 개체 캐시를 사용하면 교차 목록 쿼리를 처리하는 데 필요한 왕복 수가 크게 감소하므로 교차 목록 쿼리 결과를 표시하는 콘텐츠 쿼리 웹 파트와 같은 기능의 성능이 향상됩니다.

업데이트 확인

교차 목록 쿼리에서 업데이트를 확인하고 다음과 같은 두 가지 방법에 따라 조건부로 캐시를 새로 고치도록 구성할 수 있습니다.

  • 사이트 모음의 변경 내용을 확인합니다. 변경 내용이 없으면 캐시된 결과가 사용됩니다.

  • 일정 기간 동안 기다리면서 캐시된 결과를 사용합니다. 이 기간이 지나면 캐시를 새로 고치는 쿼리를 실행합니다.

첫 번째 설정은 교차 목록 쿼리에서 표시하는 사이트 모음의 콘텐츠가 자주 변경되어 쿼리에서 최신 정보를 표시해야 하는 경우에 유용합니다. 이러한 경우의 예로는 사이트에 있는 최신 문서의 교차 목록 쿼리를 표시하는 부서별 인트라넷 포털 사이트가 있습니다. 이러한 사이트에는 참가자가 많으므로 사용자가 게시한 최신 문서를 보는 것이 중요합니다.

두 번째 설정은 사이트 모음의 콘텐츠가 자주 변경되지 않으므로 교차 목록 쿼리에서 최신 정보를 표시하는 것이 크게 중요하지 않은 경우에 유용합니다. 이러한 경우의 예로는 사이트에 게시된 최신 문서 페이지의 교차 목록 쿼리를 표시하는 공용 인터넷 사이트가 있습니다. 이러한 사이트에서는 대부분의 사용자가 익명 사용자이거나 읽기 전용 권한으로 인증된 사용자이므로 최신 문서가 몇 분 정도 지연되어도 무방합니다.

다음 절차를 수행하여 교차 목록 쿼리 캐시를 구성할 수 있습니다.

교차 목록 쿼리 캐시 구성

  1. 사이트 홈 페이지의 사이트 작업 메뉴에서 사이트 설정을 가리킨 다음 모든 사이트 설정 수정을 클릭합니다.

  2. 사이트 설정 페이지의 사이트 모음 관리 섹션에서 사이트 모음 개체 캐시를 클릭합니다.

  3. 교차 목록 쿼리 캐시 변경 섹션에서 교차 목록 쿼리 캐시를 업데이트할 방법에 따라 적절한 옵션 단추를 선택합니다. 다음 시간 동안 교차 목록 쿼리의 캐시된 결과 사용 옵션을 선택하는 경우 캐시를 새로 고치기 전까지 대기하는 시간(초)을 나타내는 텍스트 상자에 값을 입력합니다.

  4. 확인을 클릭하여 변경 내용을 저장합니다.

검색할 항목 수

교차 목록 쿼리 결과 승산기 설정은 검색 및 캐시되는 항목의 수를 제어합니다. 사용 권한이 서로 다른 다양한 사용자가 교차 목록 쿼리를 통해 항목을 검색할 수 있으므로 모든 사용자가 올바른 항목을 볼 수 있도록 쿼리에서 충분한 수의 항목을 검색해야 합니다. 보안 조정 후에도 모든 사용자가 쿼리 결과에서 올바른 항목을 볼 수 있게 하려면 교차 목록 쿼리 캐시에서 원래 요청된 개수보다 많은 결과를 검색해야 합니다. 이 설정에는 교차 목록 쿼리 캐시에서 검색할 항목 수의 배수를 지정하는 정수를 입력해야 합니다.

  • 승산기를 높은 값으로 설정하면 더 많은 항목이 검색되어 메모리가 추가로 소모됩니다. 많은 사용자가 다양한 목록 및 항목에 대해 고유 권한을 갖는 웹 사이트에서는 높은 값이 적절합니다.

  • 승산기를 낮은 값으로 설정하면 항목이 적게 검색되어 메모리가 덜 소모됩니다. 인터넷 사이트의 익명 사용자와 같이 각 사용자의 보안이 동일한 웹 사이트에서는 낮은 값이 적절합니다.

교차 목록 쿼리 결과 승산기 구성

  1. 사이트 홈 페이지의 사이트 작업 메뉴에서 사이트 설정을 가리킨 다음 모든 사이트 설정 수정을 클릭합니다.

  2. 사이트 설정 페이지의 사이트 모음 관리 섹션에서 사이트 모음 개체 캐시를 클릭합니다.

  3. 교차 목록 쿼리 결과 승산기 상자에 값을 입력하여 교차 목록 쿼리에서 검색할 항목 수의 배수를 지정합니다.

  4. 확인을 클릭하여 변경 내용을 저장합니다.

BLOB에 대한 디스크 기반 캐싱

디스크 기반 캐싱은 이미지, 사운드, 비디오 파일 및 코드 조각과 같은 BLOB(Binary Large Object)에 대한 캐싱을 제어합니다. 디스크 기반 캐싱을 사용하면 BLOB에 액세스할 때 데이터베이스 왕복을 수행할 필요성이 줄어듭니다. BLOB이 데이터베이스에서 한 번 검색되어 웹 서버에 저장되면 추가 요청은 디스크 기반 캐시를 통해 처리되며 보안에 따라 잘립니다.

고려 사항

  • 각 웹 응용 프로그램에 대한 디스크 기반 캐시의 크기를 구성할 수 있습니다. 최소 크기는 1GB이며 크기를 기가바이트 단위로 늘릴 수 있습니다. 응용 프로그램에 대해 충분한 디스크 공간을 확보해야 합니다.

  • 디스크 기반 캐시에 대해 여러 가지 설정을 구성할 수 있으며, 다음과 같은 두 가지 설정에 특히 주의해야 합니다.

    • MaxAge는 클라이언트 브라우저에서 클라이언트 컴퓨터에 다운로드된 BLOB을 캐시할 최대 시간을 초 단위로 지정합니다. 마지막 다운로드 후 다운로드된 항목이 만료되지 않았으면 캐시가 만료될 때까지 같은 항목이 다시 요청되지 않습니다. MaxAge 특성은 기본적으로 86400초(24시간)로 설정되어 있지만 0 이상의 값으로 설정할 수 있습니다. 이 값이 클수록 브라우저에서 더 오래 기다린 후 업데이트된 항목을 가져옵니다.

    • 경로는 캐시할 파일을 파일 확장명에 따라 정규식 형태로 지정합니다. 기본적으로 파일 확장명에는 gif, jpg, png, css 및 js가 포함됩니다. 웹 페이지에서 특수한 파일 형식을 참조하는 경우 해당 확장명을 캐시에 추가해야 합니다.

  • 디스크 기반 캐싱은 문서 라이브러리의 항목에만 적용됩니다. 사이트 아래의 폴더와 같이 문서 라이브러리 외부에 리소스를 저장하는 경우에는 전체 웹 응용 프로그램에 대해 디스크 기반 캐시를 활성화해도 항목이 캐시에 의해 관리되지 않습니다. 클라이언트 브라우저에 다운로드된 BLOB 리소스의 MaxAge 설정을 조정하려는 경우 이 내용이 중요합니다. 기본적으로 Office SharePoint Server에 저장되는 모든 항목의 MaxAge는 0으로 설정됩니다.