Поделиться через


Изменение компонентов SharePoint для MDS

Узнайте, как изменить компоненты проекта SharePoint, чтобы воспользоваться преимуществами стратегии минимального скачивания (MDS) в SharePoint. Стратегия минимальной загрузки (MDS) позволяет повысить удобство работы пользователей, возвращая с сервера только части страницы, необходимые для отображения должным образом в браузере. Так как страница полностью отображаться не возвращается клиенту, сервер должен быть точно определить части, которые необходимы для отображения страницы. Может потребоваться изменить компоненты в проекте SharePoint, чтобы они помечаются как спецификации MDS и может работать с обработчиком MDS. Дополнительные сведения о MDS см. в статье Общие сведения о стратегии минимального скачивания.

Почему изменения компонентов SharePoint ?

Как описано в обзоре стратегии минимального скачивания, элементы управления SharePoint работают независимо от того, изменяете ли вы их, чтобы в полной мере воспользоваться преимуществами MDS. Тем не менее когда компонентов не соответствует спецификации MDS, модуль MDS вопросы обработки отказа. В отработки отказа модуль MDS принимает дополнительных кругового пути для перенаправления браузера с полной версией новая страница, которого занимает определенное время. Пользователи имеют наилучшего взаимодействия при изменении компоненты для работы с MDS и избежать обработки отказа каждый раз, когда они перейдите на новую страницу в SharePoint. Обычно требуется изменить главные страницы, ASP.NET страницы, элементы управления и веб-части.

Эталонные страницы

Главная страница предоставляет шаблон, который позволяет MDS определение области контента, которые должны быть обновлены когда кто-то переходит на новую страницу. Оптимизация главных страниц является одним из наиболее важных шагов, необходимо выполнить по оптимизации производительности, так как главные страницы определение разделов, которые требуют обновления контента. Главная страница Seattle.master, включенные в состав SharePoint является хорошим примером оптимизированный главной страницы. На рисунке 1 показаны примеры компонентов на главной странице Seattle.master, измените со страницы на страницу, например (1) основной области содержимого, (2) левой панели навигации и заголовок страницы (3).

Рис. 1. Компоненты, требующие обновлений на главной странице

Компоненты, которые необходимо обновить на главной странице

Примечание.

[!Примечание] Существует множество дополнительных компонентов на главной странице Seattle.master, которые изменяют со страницы на страницу, например, таблицы стилей и файлы JavaScript. На рисунке 1 показано только несколько примеров.

Существуют различные шаблоны для оптимизации компонентов в главную страницу. Шаблон можно использовать для следующих компонентов:

  • HTML-код области и элементов управления

  • Таблицы стилей

  • файлы JavaScript;

  • Заголовок страницы

HTML-код области и элементы управления являются MDS совместимые, если они помещаются в тегах SharePoint:AjaxDelta. Перенос контента в SharePoint:AjaxDelta теги, передача сигналов, что модуль MDS следует обновить вложенных элементов и HTML. Если элемент управления или раздел HTML не изменяется со страницы на страницу, он не будут отправляться клиенту. Таким образом необходимо учитывать следующие элементы управления вне AjaxDelta тегов. В Seattle.master главной странице показано на рисунке 1 (1) основной области содержимого заключается в теги AjaxDelta, как показано ниже.

<SharePoint:AjaxDelta
            id="DeltaPlaceHolderMain"
            BlockElement="true"
            IsMainContent="true"
            runat="server">
    <a id="mainContent" name="mainContent" tabindex="-1"></a>
    <asp:ContentPlaceHolder id="PlaceHolderMain" runat="server" />
</SharePoint:AjaxDelta>

Другой пример шаблона AjaxDelta — (2) левой панели навигации на рисунке 1. В следующем коде показано, как элемент управления заключается в AjaxDelta тегов, а также множество элементов управления и HTML-код.

<SharePoint:AjaxDelta
            id="DeltaPlaceHolderLeftNavBar"
            BlockElement="true"
            CssClass="ms-core-navigation"
            role="navigation"
            runat="server">
    <asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server">
        <a id="startNavigation" name="startNavigation" tabIndex="-1"></a>
        <asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server" />
        <asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server" />
        <asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" />
        <asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />
        <asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server" />
        <!-- There are more controls and HTML in this placeholder in the Seattle master page -->
    </asp:ContentPlaceHolder>
</SharePoint:AjaxDelta>

Кое-что необходимо помнить о тегах AjaxDelta — это невозможно вложить их. Теги AjaxDelta на верхнем уровне необходимые необходимо указать в структуре главной страницы.

Последний пример на рисунке 1 — Заголовок страницы (3), в котором требуется специальный шаблон, который используется тег SharePoint:PageTitle. В следующем коде показан тег PageTitle как используется на главной странице Seattle.master.


<SharePoint:PageTitle runat="server">
    <asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server">
        <SharePoint:ProjectProperty Property="Title" runat="server" />
    </asp:ContentPlaceHolder>
</SharePoint:PageTitle>

Главная страница также может включать файлы JavaScript и таблицы стилей. Ядро сервера необходимо определить CSS и JavaScript необходимые файлы. Чтобы определить ресурсы файлы CSS при необходимости, используйте следующий шаблон.


<SharePoint:CssLink runat="server" Version="15"/>
<SharePoint:CssRegistration Name="my_styles.css" runat="server" />

Обратите внимание на то, что у вас есть только один тег CssLink на главную страницу, но может вызывать много тегов CssRegistration, можно добавить множество CSS-файлы. Используйте следующий шаблон для файлов JavaScript.


<SharePoint:ScriptLink language="javascript" name="my_javascript.js" runat="server" />

Включая файлы CSS и JavaScript с помощью style и script теги HTML в MDS не поддерживается.

Страницы ASP.NET

Проект содержит ASP.NET страниц, вероятно, требуется ли ссылки на файлы CSS и JavaScript. Теги HTML style и script не совместимы с MDS. Используйте шаблоны CssRegistration и ScriptLink, описано в предыдущем разделе.

На страницах ASP.NET могут также использовать метод Response.Output для записи содержимого на страницу, которая не допускается в MDS. Вместо этого можно использовать следующие методы спецификации MDS класса SPHttpUtility :

Помимо ссылки на файлы JavaScript, ASP.NET страниц может иметь JavaScript встроенного кода. Использовать следующий шаблон, чтобы сделать сценарий блокирует MDS совместимые.

<SharePoint:ScriptBlock runat="server" >
    // Your JavaScript code here.
</SharePoint:ScriptBlock>

Элементы управления и веб-части

Кроме того, необходимо пометить элементы управления и веб-части как совместимые с MDS. В следующем коде показан шаблон для использования.


[assembly: Microsoft.SharePoint.WebControls.MdsCompliantAttribute(IsCompliant = true)]
namespace VisualWebPartProject2.VisualWebPart1
{
    // Rest of your control logic

Кроме того, элементы управления и веб-части должны регистрировать свои ресурсы с помощью методов в классе SPPageContentManager . Основные ресурсы, JavaScript фрагменты кода и скрытые файлы, которые могут быть зарегистрированы с помощью RegisterClientScriptBlock и RegisterHiddenField.

Элементы управления и веб-части также могут использовать XSLT-файлы для управления процессом отрисовки. XSLT-файлы могут иметь вложенные JavaScript кода или файлов. Модуль MDS необходимо знать об этих ресурсов. Можно регистрировать JavaScript ресурсы, с помощью объекта расширения XSLT с именем pcm. Отличный пример использования объекта pcm находится в файле %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS\XSL\fldtypes.xsl. В следующем коде показано, как файл fldtypes.xsl использует объект pcm для регистрации JavaScript ресурсы.


<xsl:value-of select="pcm:RegisterScriptBlock(concat('block1',$ViewCounter), string($scriptbody1))"/>
<xsl:value-of select="pcm:RegisterScriptLink('/_layouts/15/wssactionmenu.js')"/>

См. также