sharepoint - 站点 Assets 中的 JS 文件未更新

标签 sharepoint sharepoint-2013

好吧,我以前从未见过这样的事情,希望其他人也见过。我刚刚将我们的开发和测试服务器修补到 Nov2017CU (SharePoint 2013)。从那时起,任何使用站点 Assets 中的 JS 注入(inject)的解决方案都不会更新。我将对文件进行更改,库反射(reflect)了我所做的更改,但是当我尝试加载访问 js 文件的页面时,更改没有反射(reflect)出来。硬刷新和完整缓存清理不会影响它。如果我关闭并重新打开编辑器 (VSCode),我的更改就会消失。当我查看版本历史记录时,当前版本没有我的更改,但以前的版本有。如果我尝试恢复到该版本,则不会(仍然显示文件的先前版本)。

这就是事情变得格外奇怪的地方。我已从库中删除了整个文件。重置 IIS(哎呀,我什至一度重新启动了服务器)。它以某种方式仍然加载文件。该文件不再位于库中,但服务器仍在将其提供给浏览器。我已确认它没有从其他位置获取它,因为开发工具显示该文件位于文件被删除的资源库中。即使以前从未访问过该网站的用户仍然可以在浏览器中获取该文件。

这也不限于单个站点。我在不同子网站(同一网站集)中的其他开发人员也遇到了相同的问题。 有人以前见过这个吗?

最佳答案

看起来您的 Web 应用程序启用了 BLOB 缓存,这导致从缓存提供文件。

有两种修复方法:

1) 最严厉的方法是使用提到的 powershell 命令刷新 BLOB 缓存:

$webApp = Get-SPWebApplication "<WebApplicationURL>" 
[Microsoft.SharePoint.Publishing.PublishingCache]::FlushBlob‌​Cache($webApp) 

这将刷新 BLOB 中的所有文件。通常,文件根据 max-age 属性值进行缓存。因此,这就是即使您已从源中删除文件,仍会提供文件的原因。

2) 手术刀方法是将查询字符串附加到文件引用(通常在母版页、页面布局、Web 部件引用、脚本链接等(无论在何处引用)。当您将查询字符串附加到文件时,它将强制浏览器下载该文件的较新版本。更喜欢这种方法,因为它不会不必要地从 BLOB 中清除其他文件。

关于sharepoint - 站点 Assets 中的 JS 文件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324747/

相关文章:

javascript - 为什么在 SharePoint 2013 中进行 CAR 自定义后,项目未显示在 Web 部件中?

c# - 使用日志记录服务时,对象引用未设置为对象的实例

c# - 如何解析从 SharePoint Web 服务返回的内部 XML

sharepoint - 正确实现带有回发的webpart?

sharepoint - 将自定义 Web 服务部署到 sharepoint 服务器(2007/2010)?

javascript - 使用 Javascript CSOM 在 SharePoint 2013 中设置搜索中心 URL

javascript - 隐藏 iframe 中显示的 Sharepoint 自定义列表的标题

sharepoint - 在 SharePoint 2013 Webpart 中使用 Signalr

javascript - SharePoint 2013计算列(文本+日期)

typescript - 如何格式化上传 session Microsoft Graph API 的 Content-Range header