Как можно включить кэш вывода в SharePoint Foundation?

Я использую SharePoint Foundation 2010 и хочу включить кэширование вывода для определенных страниц или, возможно, всего сайта. В SharePoint Server у вас есть механизм, позволяющий включить кэширование вывода страницы в семействе сайтов (на самом деле это кэш вывода ASP.NET под капотом). На SPF вы не получаете этой функции - достаточно честно.

Итак, как я могу включить кеширование вывода? В ASP.NET я бы просто добавил директиву страницы - что-то вроде ‹% @ OutputCache Duration =" 30 "%>. SharePoint выдает ошибку, если это есть на странице. Похоже, это нужно сделать в коде, возможно, переопределить класс страницы? Любые предложения приветствуются.


person mike    schedule 22.06.2010    source источник


Ответы (2)


Вам нужно перейти на верхнее семейство сайтов, там у вас есть опция в разделе «Администрирование сайта» -> обналичивание выходных данных для семейства сайтов -> что-то вроде профилей наличных денег. Здесь вы можете настроить свой профиль для кеширования вывода и прочего.

person Diomos    schedule 03.02.2011

Вы должны:

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.

person Roger Gusmao    schedule 12.07.2017
comment
Еще одна вещь, иногда вам нужно очистить предварительно скомпилированный ascx, который хранится по адресу: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files - person Roger Gusmao; 25.07.2018