0

我有一个小型 SharePoint 项目,它集成到一个更大的 SharePoint 项目中。我的项目有几个 javascript 文件和图像(通过 CSS)。每当我更新应用程序(javascript 或图像或两者)时,我都需要明确地执行 Ctrl + F5(强制刷新)以获取最新版本。用户在缓存中看到旧数据。这个应用程序正在被数百名用户使用,我不能告诉他们每个人都按 Ctrl + F5。

如何为我的项目完全禁用缓存?

4

1 回答 1

2

您可以为包含实际 html 的脚本/图像/css 引用创建服务器/用户控件。每次用户请求页面时,该控件都会向您的每个脚本/css/图像引用添加一个随机查询字符串。您的参考如下:

/_layouts/1033/styles/Themable/Menu.css?rev={插入随机 guid}

这将导致浏览器每次都重新加载文件。

但是,您为什么要删除缓存,因为这会缩短用户的页面加载时间?您可以轻松地使用我拥有的示例,而不是生成随机 guid,而是根据当前文件的哈希生成一个 guid。这样,它只会在文件实际更改时强制用户更新文件。或者,更好的是,SharePoint 已经拥有SPUtility.MakeBrowserCacheSafeLayoutsUrl可用于创建正确缓存的 url。这是一个例子

母版页中的 Html(RelativeUrl 位于“C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS”下)

<MyControls:CacheSafeScriptLinkControl RelativeUrl="MyFeature/js/core.js" 
  runat="server" />

服务器控制

protected override void CreateChildControls()
{
  string cacheSafeUrl = 
    SPUtility.MakeBrowserCacheSafeLayoutsUrl(RelativeUrl, false);

  ScriptLink scriptLink = new ScriptLink
  {
    Language = "javascript",
    Localizable = false,
    Name = cacheSafeUrl,
    Version = 4
  };

  Controls.Add(scriptLink);

  base.CreateChildControls();
}
于 2012-04-24T18:03:03.923 回答