我正在使用SharePoint Foundation 2010,并且希望为某些页面或整个站点启用输出缓存。在SharePoint Server上,您有一种机制可以在网站集中启用页面输出缓存(它实际上是ASP.NET输出缓存)。在SPF上你没有得到这个功能 - 足够公平。
那么如何启用输出缓存?在ASP.NET中我只会添加一个页面指令 - 类似于<%@ OutputCache Duration =“30”%>。如果它在页面中,则SharePoint会引发错误。听起来需要在代码中完成,或许覆盖页面类?欢迎任何建议。
答案 0 :(得分:0)
您需要访问热门网站集,您可以选择网站管理 - >网站集输出兑现 - >现金资料。在那里,您可以设置输出兑现和其他内容的配置文件。
答案 1 :(得分:0)
你必须:
0 - 添加参数
<%@ OutputCache Duration="300" VaryByParam="*" Shared="True" VaryByCustom="x" VaryByControl="hdnButtonToForceUpdateCacheIfYouWantOnClick" %>
1 - 扩展SPHttpApplication,IVaryByCustomHandler。
public class MyCache: SPHttpApplication, IVaryByCustomHandler {
public override void Init()
{
base.Init();
this.RegisterGetVaryByCustomStringHandler((Microsoft.SharePoint.ApplicationRuntime.IVaryByCustomHandler)this);
}
public string GetVaryByCustomString(HttpApplication app, HttpContext context, string custom)
{
StringBuilder sb = new StringBuilder();
string[] strings = custom.Split(';');
bool appended = false;
foreach (string str in strings)
{
switch (str)
{
case "x":
var xv= context.Request.Cookies.Get("x");
if (xv!= null)
{
sb.Append(xv.Value);
}
break;
}
}
return sb.toString();
}
}
2 - 修改你的global.asax后,
<%@ Assembly Name="Microsoft.SharePoint"%>
<%@ Assembly Name="Energisa.Distribuidora.Webparts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e2d241931dc35e9d"%>
<%@ Import Namespace="(Namespace).Webparts" %>
<%@ Application Language="C#" Inherits="(Namespace).MyCache" %>
请参阅:https://msdn.microsoft.com/en-us/library/office/ms550239(v=office.14).aspx