我注意到一个解决方案,它可以帮助你的 javascript文件

有一种方法Sputility。 makebrowsercachesafelayoutsurl msdn 说这个方法:< EM>返回一个新的URL,当关联的文件更改更改时,浏览器不会被浏览器缓存。

听起来很棒。我已经尝试使用这样的方法:

 <script type="text/jscript" src="<%=SPUtility.MakeBrowserCacheSafeLayoutsUrl("projectName/scripts/plugins/tapes_report_definition.js", false)%>" ></script>
.

所以,它的工作。它生成?rev= {md5hash_of_my_file.js}在URL末尾的一部分。但在我更改了这个.js文件后,新的MD5哈希没有生成。 ?Rev部分保持不变。我尝试了iisreset,重新部署等,但没有任何帮助。我用反射器检查了此方法,并了解到MakeBrowserCachesafelayoutSurl一直不会生成MD5哈希,而是从内部SpvolitileCache对象获取它。

我以为我可以通过删除这两个文件夹中的所有文件来清除此缓存:

  1. %appdata%\ microsoft \ web服务器扩展\ cache
  2. %userprofile%\ appdata \ local \ microsoft \ websitecache

    删除没有帮助..sputility.makebrowsercachesafelayoutsurl仍然返回更改JavaScript文件后的相同值。

    我有三个问题:

    1. 毕竟我如何刷新spvolitilecache?
    2. 如何强迫sputility.makebrowsercachesafelayoutsurl生成 新的?rev=无清除缓存?
    3. 考虑到上面的全部,它甚至是有意义的,使用sputility.makebrowsercachesafelayoutsurl?

      任何其他信息都将非常感谢!

有帮助吗?

解决方案

我再次检查它,我确认此方法完全可行。IISRESET后,文件的URL会刷新。这正是我想看到的。

其他提示

我想添加这个只是评论,但stackexchange不允许那个。所以,这是我的答案:对于寻求解决内容编辑器Web部件(或jslink到.js文件的jslink)解决缓存脚本元素问题的人,知道sputility.makebrowsercachesafeURL方法是仅限服务器嵌入在ASPX页面上。确保您明白您不能将代码普及为.js文件或内容编辑器Web部件并具有它功能。它不会。

所说,该方法真的非常毫无价值,因为你可以只是使用scriptlink标签。 ScriptLink将为您添加?转速。您可能暂时使用此方法的唯一时间是您将脚本标记嵌入到您永远不应该执行的页面中。完全反对整个草皮框架和最佳实践,并且可能无法与MDS合作。

我发现此页面的原因是因为我在页面上有一个InfoPath表单Web部件,之前的开发人员使用单独的.js文件来为它制作一些按钮。按钮的.js文件在内容编辑器Web部件中引用。这可能是一个常见的场景,但它是有问题的,因为文件引用没有尾随?REV除非手动添加。除非有一个实际的客户端方法,否则有助于生成某种?rev,而且我没有看到如何,我的投票是这种方法是没用的。

许可以下: CC-BY-SA归因
scroll top