다음을 통해 공유


ContentPrefetcher 클래스

정의

프리페치할 웹 리소스를 지정하기 위한 속성을 제공합니다. Windows는 추론을 사용하여 사용자가 앱을 실행하기 전에 지정된 리소스를 다운로드하려고 시도합니다.

public ref class ContentPrefetcher abstract sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ContentPrefetcher final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public static class ContentPrefetcher
Public Class ContentPrefetcher
상속
Object Platform::Object IInspectable ContentPrefetcher
특성

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

설명

많은 범주의 앱은 시작 시 상당한 양의 웹 콘텐츠를 다운로드해야 합니다. 이로 인해 앱이 완전히 작동하기 전에 사용자가 콘텐츠가 로드될 때까지 기다려야 하는 사용자 환경이 저하될 수 있습니다. ContentPrefetcher 클래스는 사용자가 앱을 실행하기 전에 Windows에서 다운로드해야 하는 리소스를 지정하는 메커니즘을 제공합니다.

추론은 프리페치를 수행해야 하는 시기와 다운로드할 리소스를 결정하는 데 사용됩니다. 이러한 추론은 시스템 네트워크 및 전원 상태, 사용자 앱 사용 기록 및 최대 사용자 혜택을 제공하기 위한 이전 프리페치 시도의 결과를 고려하지만 특정 리소스가 지정된 앱을 시작하기 전에 다운로드되었다는 보장은 없습니다.

성공적으로 프리페치된 리소스는 앱별 WinINet 캐시에 배치됩니다. 앱이 실행되면 이러한 리소스에 대한 기존 HTTP 요청을 변경할 필요가 없습니다. WinINet 은 사용 가능한 경우 캐시의 콘텐츠를 투명하게 제공합니다. 요청된 리소스가 프리페치되지 않은 경우 콘텐츠에 대한 HTTP 요청은 단순히 캐시 누락을 초래하고 서버에 대한 요청이 이루어집니다. 이 캐싱 전략은 WinJS.xhr, Windows.Web.Http.HttpClientIXMLHTTPRequest2 인터페이스를 사용하여 수행된 HTTP 요청에 대해 작동합니다. .NET Framework HttpClient는 지원되지 않습니다.

ContentPrefetcher 클래스는 프리페치해야 하는 리소스를 지정하기 위한 두 가지 메커니즘을 제공합니다.

  • ContentUris 속성을 사용하면 리소스의 직접 클라이언트 쪽 사양을 프리페치할 수 있습니다. 이는 애플리케이션의 후속 사용 간에 변경되지 않는다는 측면에서 상당히 정적인 URI가 있는 콘텐츠에 유용합니다. 예를 들어 사용자가 구독하는 앱의 섹션과 연결된 URI는 사용자가 애플리케이션으로 구독 옵션을 업데이트할 때만 변경됩니다.
  • IndirectContentUri 속성은 프리페치할 리소스를 나열하는 XML 파일의 위치를 지정하는 데 제공합니다. 그런 다음 XML의 내용을 수정하여 프리페치할 리소스를 동적으로 업데이트할 수 있습니다. 이는 콘텐츠 URI가 애플리케이션의 후속 사용 간에 변경될 것으로 예상되는 경우 콘텐츠가 더 동적인 경우에 유용합니다.

예를 들어 최신 뉴스 기사에 대한 이미지를 프리페치하고, 뉴스 기사 및 해당 이미지가 자주 변경되며, XML 파일을 최신 URI로 최신 상태로 유지하여 프리페치할 수 있습니다. 앱은 두 속성을 모두 사용하여 프리페치할 리소스를 지정할 수 있습니다. 최대 40개의 콘텐츠 URI가 지원되며 ContentUri 속성을 통해 지정된 리소스는 IndirectContentUri XML에 지정된 리소스에 기본 설정으로 다운로드됩니다. 프리페치 작업의 이점을 최대한 활용하려면 사용자가 처음 보거나 사용자가 자주 사용하는 프리페치 콘텐츠의 우선 순위를 지정해야 합니다. 앱의 수명이 합리적으로 긴 콘텐츠를 표시해야 합니다. 즉시 또는 매우 짧은 만료 시간이 있는 콘텐츠 또는 짧은 시간 내에 사용자의 보기에서 사용 중지되는 콘텐츠를 프리페치하지 마세요. 수명이 짧은 콘텐츠는 앱이 사용되기 전에 콘텐츠가 만료되거나 표시되지 않을 가능성이 높기 때문에 프리페치된 콘텐츠에 대한 잘못된 선택이므로 사용자에게는 도움이 되지 않습니다.

위에서 설명한 대로 시스템은 앱에 대해 프리페치를 수행하는 시기를 결정합니다. 그러나 개발 목적으로 IContentPrefetcherTaskTrigger 인터페이스 데스크톱 API를 호출하여 앱에 대한 즉각적인 프리페치를 시작할 수 있습니다.

디버깅을 지원하기 위해 Microsoft-Windows-BackgroundTransfer-ContentPrefetcher 채널에서 ETW 이벤트를 수신 대기할 수 있습니다. 프리페치 시작 및 완료, HTTP 요청의 시작 및 완료 및 XML 유효성 검사와 같은 발생은 이벤트를 트리거합니다.

속성

ContentUris

앱에 대해 프리페치를 수행할 때 다운로드할 URI의 배열입니다.

IndirectContentUri

프리페치할 리소스 목록을 포함하는 잘 구성된 XML 파일의 위치를 지정합니다.

LastSuccessfulPrefetchTime

마지막으로 성공한 콘텐츠 프리페치 작업의 날짜와 시간을 가져옵니다.

적용 대상