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 Platform::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

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

适用于