ContentPrefetcher 类

定义

提供用于指定要预提取的 Web 资源的属性。 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 IInspectable ContentPrefetcher
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

注解

许多类别的应用需要在启动时下载大量 Web 内容。 这可能会导致用户体验不佳,用户必须在应用完全正常运行之前等待内容加载。 ContentPrefetcher 类提供用于指定 Windows 应在用户启动应用之前尝试下载的资源的机制。

启发式用于确定何时应进行预提取,以及将下载哪些资源。 这些启发式会考虑系统网络和电源条件、用户应用使用历史记录以及之前预提取尝试提供最大用户权益的结果,但不能保证在给定的应用启动之前下载任何特定资源。

已成功预提取的资源将放置在特定于应用的 WinINet 缓存中。 运行应用后,无需对这些资源的现有 HTTP 请求进行更改; 如果 WinINet 可用,则只需以透明方式为缓存中的内容提供服务。 如果请求的资源未预提取,则对内容的 HTTP 请求只会导致缓存丢失,并且请求会发送到服务器。 请注意,此缓存策略适用于使用 WinJS.xhrWindows.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

获取上次成功的内容预提取操作的日期和时间。

适用于