0

我使用 Workbox 在我的 sharepoint 项目中预缓存和缓存资源。ms sharepoint 使用了很多我希望缓存的开箱即用的 js / css。

Sharepoint 为 js、css 呈现 src 标签,并在查询字符串中附加一个修订 ID。像这样的东西:

<link rel="stylesheet" type="text/css" href="/_layouts/15/1046/styles/SuiteNav.css?rev=tyIeEoGrLkQjn4siLhDMLw%3D%3DTAG0"/>
<script type="text/javascript" src="/_layouts/15/1046/initstrings.js?rev=mwvYlbIyUbEbxtCpAg383w%3D%3DTAG0"></script>

我想根据修订 (rev) 查询字符串使这些资源过期。这可以通过workbox js中的任何开箱即用的东西来完成,还是我需要一个自定义插件之类的东西?

你能指出我的文档/示例吗?

先感谢您

4

1 回答 1

0

如果您正在处理在构建时不可用的资源,例如,因为这些 URL 仅存在于 Sharepoint 服务器上,那么您将不得不使用运行时缓存来处理它们。

我建议对那些在其 URL 中有修订信息的资源采用缓存优先策略,因为它们(希望!)只有在其 URL 更改时才会更改。

就确保您最终使旧条目过期而言,积极地做这件事有点棘手。相反,我建议您使用更保守的到期方法,缓存中的最大条目数是在任何给定时间有效的预期 URL 数的倍数。例如,如果您知道在任何给定时间可能有大约 10 个 URL 是“最新的”,那么配置缓存过期以在缓存中达到大约 30 个左右的项目后开始过期条目将是合理的。

综上所述,您可以按如下方式配置 Workbox 的运行时缓存(使用新的 v3 语法):

workbox.routing.registerRoute(
  // Customize this pattern as needed.
  new RegExp('/_layouts/15/1046/'),
  workbox.strategies.cacheFirst({
    cacheName: 'sharepoint-assets',
    plugins: [
      new workbox.expiration.Plugin({maxEntries: 30}),
    ],
  })
);
于 2018-03-12T20:42:08.513 回答