基于查询字符串使workboxjs缓存项目失效

时间:2018-03-12 18:34:05

标签: sharepoint workbox

我正在使用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)查询字符串使这些资源到期。 这可以通过工作箱js中的任何开箱即用来完成,或者我需要类似自定义插件的东西吗?

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

提前谢谢

1 个答案:

答案 0 :(得分:0)

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

我建议使用缓存优先策略来获取资源,例如那些在其网址中包含修订信息的资源,因为他们(希望!)只有在其网址发生变化时才会更改。

在确保您最终使旧条目过期方面,进行积极的做法有点棘手。我建议的是,您使用更保守的过期方法,缓存中的最大条目数是在任何给定时间有效的预期URL数的倍数。例如,如果您知道可能有~10个网址是&#34;最近的&#34;在任何给定时间,然后配置缓存过期以便在达到约30个左右的项目后,开始过期的条目是合理的。

总而言之,您可以按如下方式配置Workbox的运行时缓存(using the new v3 syntax):

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}),
    ],
  })
);