sharepoint2013的最少下载策略概述(MDS)
该策略是 SharePoint 2013 中的一种新功能,通过在用户导航到新页面时仅发送差异内容来减少页面加载时间。
最少下载策略 (MDS) 是 SharePoint 2013 中的一种新技术,可减少用户在 SharePoint 网站中从一个页面导航到另一个页面时浏览器需要下载的数据量。当用户浏览启用了 MDS 的网站时,客户端仅处理当前页面和请求页面之间的差异内容(或增量)。图 1 显示了页面之间出现变化且因此需要更新的部分。增量通常包含 (1) 内容区域中的数据,以及 (2) 导航控件之类的其他组件。
图 1. 使用 MDS 处理的页面
您可以通过查看 URL 识别启用了 MDS 的网站。启用了 MDS 的网站的 URL 中包含 (3) _layouts/15/start.aspx 页面,后跟哈希标记 (#) 及请求资源的相关 URL,如图 1 所示。例如,下面是页面 newpage.aspx 的 MDS 格式化 URL:
https://sp_site/_layouts/15/start.aspx#/SitePages/newpage.aspx
该 URL 相当于下面非 MDS 格式化的 URL:
https://sp_site/SitePages/newpage.aspx
作为开发人员,您可能已创建 SharePoint 组件,这些组件需要进行一些更新才能与 MDS 进行无缝协作。
您可以通过使用网站管理页面或 SharePoint 客户端对象模型在网站中启用 MDS。
若要通过在管理页面中激活 MDS 功能来启用,请选择“网站设置”>“管理网站功能”,然后激活“最少下载策略”功能。
由于该功能是通过修改 EnableMinimalDownload 属性激活,因此您也可以使用客户端 API。下面的代码显示了如何使用 JavaScript 对象模型 (JSOM) 启用 MDS。
var clientContext; clientContext = new SP.ClientContext.get_current();
this.oWebsite = clientContext.get_web(); this.oWebsite.set_enableMinimalDownload(true);
this.oWebsite.update(); clientContext.load(this.oWebsite); clientContext.executeQueryAsync(
Function.createDelegate(this, successHandler),
Function.createDelegate(this, errorHandler)
); function successHandler() {
alert("MDS is enabled in this site.");
} function errorHandler() {
alert("Request failed: " + arguments[1].get_message());
}
使用 MDS 有几点好处,包括:
速度:这是 MDS 的主要目标。如果您使用了 MDS,则浏览器不必再次处理 Chrome 用户界面 (UI)。与全页加载相比,MDS 还减少了负载。
平稳过渡:通过仅更新有变化的区域,您可以将用户注意力集中在这些区域,与整个页面“闪动”的全页加载完全不同。如果更新了整个页面,用户必须分析整个页面以找到新内容。浏览仅更新相比前一页有变化区域的网站时,用户会更轻松。
浏览器导航控件:其他基于 AJAX 的系统会混淆浏览器中的“上一页”和“下一页”按钮。由于 MDS 在浏览器窗口中更新 URL,因此上一页和下一页按钮会按本来的方式工作。
向后兼容:MDS 引擎会立即提供 MDS 导航,或者检测无法进行导航的情况。如果无法进行 MDS 导航,将显示全页加载来替代。该过程称为故障转移,可确保所有页面正确呈现,无论其中是否包含 MDS 兼容组件。MDS 还可以与搜索引擎进行很好的协作,因为定位标记的 href 属性使用常规的非 MDS 格式化 URL。然而,客户端的 MDS 引擎会捕获 onclick 事件,并使用该事件与服务器进行通信。
MDS 的基本结构很简单。MDS 的主要组件是两个引擎,一个是在服务器中,另一个是在客户端中;当用户在网站中的页面之间导航时,这两个引擎会共同协作以计算变化内容并在浏览器中呈现页面。图 2 显示了用户浏览启用了 MDS 的网站时的 MDS 流。
图 2. 用户浏览网站时的 MDS 流
浏览器请求 SharePoint 网站中当前页面和新页面之间的变化内容。
服务器中的 MDS 引擎计算当前页面和新页面之间的增量。
服务器中的 MDS 引擎将增量发送给客户端的 MDS 引擎。
客户端的 MDS 引擎将当前页面上的变化区域替换为新页面内容。
生成的页面与未使用 MDS 情况下所下载的页面完全相同。
客户端的 MDS 引擎包含一个下载管理器。页面中的所有请求都通过下载管理器传送。页面中的所有控件必须订阅下载管理器以了解 URL 何时出现更改。下载管理器对所有新控件数据作出一次请求。为了能够与搜索引擎协作,MDS 引擎不直接使用定位标记的 href 属性来存储 MDS 格式化的 URL。作为替代,SPUpdatePage 函数会处理 onclick 事件并使用该事件与服务器通信。SPUpdatePage 函数在 _layouts/15/start.js 文件中声明。
服务器中的 MDS 引擎将信息发送回客户端。此信息可能包含具有嵌入式脚本和样式的 HTML、XML 或 JavaScript 对象表示法 (JSON)。
URL 在 MDS 中起着重要作用。MDS URL 应如下所示:https://sp_site/_layouts/15/start.aspx#/SitePages/newpage.aspx。Start.aspx 包含加载页变化的最少共享 UI 和说明。MDS 将哈希标记 (#) 之后的部分视为目标页面。目标页面以斜线 (/) 开头,后跟与 SharePoint 网站相关的 URL。当浏览器收到 URL 时,会发现哈希标记左侧的部分发生更改,因此触发本地导航事件。客户端的 MDS 引擎捕获本地导航事件,并使用该事件执行 MDS 更新。
如本文中前面所述,在某些情况下无法确定页面能否正确更新。在这些情况下,MDS 引擎会发出故障转移,其中包含额外的往返过程,可将浏览器重定向到新页面的完整版本。以下是出现故障转移的最常见原因:
新页面具有不同母版页。
当前母版页已更改。
MDS 引擎检测到不兼容的 HTML,例如:
使用 ASP.NET 2.0 的页面
未在 MDS 引擎中注册的 CSS 或脚本
非法 HTML
页面上有不兼容的控件,例如:
控件不在 MDS 引擎白名单中。
控件程序集未标记为兼容。
控件类不具有 MDS 属性。
当用户导航到另一个新页面后,MDS 引擎尝试从故障转移恢复。
由于存在故障转移机制,无论用户网站中是否启用了 MDS,您的控件都可以无缝工作。但是,最好更新您的 SharePoint 控件和组件以充分利用 MDS。在页面和控件与 MDS 兼容的情况下,用户可以获得更好体验。以下是可针对 MDS 优化的良好候选对象:
母版页
ASP.NET 页面
控件和 Web 部件
sharepoint2013的最少下载策略概述(MDS)的更多相关文章
- Spring笔记01_下载_概述_监听器
目录 Spring笔记01 1.Spring介绍 1.1 Spring概述 1.2 Spring好处 1.3 Spring结构体系 1.4 在项目中的架构 1.5 程序的耦合和解耦 2. Spring ...
- hiberbnate 缓存策略概述
1. 首先了解什么是缓存 这里说的缓存并不是指计算机的内存或者CPU的一二级缓存. 缓存是指为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能的一种策略.即对物理数据源的复制,存在于内 ...
- Spring _day01_下载、概述、监听器
Spring:SE/EE开发的一站式框架. .一站式框架:有EE开发的每一层解决方案. . WEB层 :SpringMVC . Service层 :Spring的Bean管理,Spring ...
- 为 MDS 修改 SharePoint 2013组件
了解如何修改 SharePoint 项目中的组件以在 SharePoint 2013 中利用最少下载策略(MDS). 本文内容 为何修改 SharePoint 组件? 母版页 ASP.NET 页面 ...
- SharePoint 2013 页面访问,Url中间多一段"_layouts/15/start.aspx#"
问题描述: 我想访问如下页面 http://Host/_layouts/15/ManageFeatures.aspx 点击以后页面地址没有错,但是中间多了一段“_layouts/15/start.as ...
- SharePoint 2013 页面访问,Url中间多一段"_layouts/15/start.aspx#"
问题描述: 我想访问如下页面 http://Host/_layouts/15/ManageFeatures.aspx 点击以后页面地址没有错,但是中间多了一段"_layouts/15/sta ...
- SDWebImage 在多线程下载图片时防止错乱的策略
在我们使用sd的时候,对tableView 上cell得图片进行异步下载的时候会遇到这样一个问题: 由于cell的重用机制,在我们加载出一个cell的时候imageView数据源开启一个下载任务并返 ...
- Kubernetes集群安全概述
API的访问安全性 API Server的端口和地址 在默认情况下,API Server通过本地端口和安全端口两个不同的HTTP端口,对外提供API服务,其中本地端口是基于HTTP协议的,用于在本机( ...
- Unity3D热更新全书-下载 唯一的一篇
下载在这个时代实在是太平常了,每个人都深刻的理解着下载到底是什么. 这一篇文字只是把下载的代码分享并介绍,而已. 首先,下载系统担负着几个使命. 第一.是保持客户端版本库的最新. 第二.是下载要能够比 ...
随机推荐
- android 处理302地址
最近项目中需要用到重定向下载,所以找了很多的方法都不合适.因为下载的链接并非单纯的地址,而是需要多次转发的, 在下载的时候用的是URL来打开数据流.但是多次测试并不能对多次跳转的链接打开请求.对于30 ...
- Linux演示 dd测试IO
dd测试IO,经常会用到,用来简单测试某个目录的读写性能. 本次测试环境:自己电脑的ubuntu系统-其他Unix/Linux系统也可以用dd. Tips:dd操作需要三思而行,搞清楚确认没问题再进行 ...
- Django快速开发之投票系统
https://docs.djangoproject.com/en/1.8/intro/tutorial01/ 参考官网文档,创建投票系统. ================ Windows 7/1 ...
- Cannot override the final method from SherlockFragmentActivity
调用ActionBarSherlock后页面找不到onCreateOptionsMenu报错 com.actionbarsherlock.app.SherlockFragmentActivity.on ...
- SQL Server安全(5/11):架构与安全(Schemas and Security)
在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...
- 安装elasticsearch及中文IK和近义词配置
安装elasticsearch及中文IK和近义词配置 安装java环境 java环境是elasticsearch安装必须的 yum install java-1.8.0-openjdk 安装elast ...
- 30天C#基础巩固------读写流(StreamWrite/StreamReader)
一:读写流的一些案例. --->关于StreamWrite 这里的一些常用的方法和我们之前的那个FileStream是一样的,参数很多都是一样的用法. Console.WriteLi ...
- [Asp.net 5] Configuration-新一代的配置文件(神奇的Binder)
关于配置文件的目录:[Asp.net 5] Configuration-新一代的配置文件 之前看过MVC4.0的源码,里面就有Binder.作用是将前台页面传递过来的键值对/字典表绑定到特定的对象.此 ...
- asp.net网站优化经验之谈
最近公司一个项目上线后,经常崩溃,于是开始重视性能问题,在网上看到了许多相关文章,整理下发了上来.以备参考. 在用ASP.NET开发网站的时候,性能是永远需要考虑和关注的问题,性能不仅仅只是程序代码执 ...
- 走进异步世界:EnyimMemcached异步化改造引起的内存泄漏
6月30日我们发布了异步化改造后的博客程序之后,出现了高内存.高CPU.高线程数的不理想情况. 经过一周的追查,终于水落日出——引起不理想情况的根源是我们修改过的EnyimMemcached代码存在内 ...