因此,在 SharePoint 博客圈中,似乎每个人都只是从其他博客复制并粘贴相同的要点。我看到的一个要点是,SharePoint 网站模板的效率低于网站定义,因为网站定义存储在文件系统上。真的吗?

网站模板的效率较低,这似乎很奇怪。据我了解,所有网站内容都位于数据库中,无论您使用网站模板还是网站定义。网站模板一旦应用到数据库,从那时起,网站就不应该关心内容是否是使用网站模板创建的。

那么,网站模板的效率低于网站定义的架构原因是什么?


编辑:声称存在性能差异的博客链接:

  • 微软软件定义网络: :由于在数据库中存储模板和从数据库中检索模板的速度很慢,因此网站模板可能会导致性能下降。
  • 开发X: :但是,SharePoint 中的用户模板可能会导致性能问题,并且如果您尝试为整个组织创建一组可重用模板,则可能不是最佳方法。
  • IT 足迹: :由于在数据库中存储模板和从数据库中检索模板的速度很慢,因此网站模板可能会导致性能下降。每次呈现页面时都会编译并执行数据库中的模板。
  • 品牌化 SharePoint:与自定义模板相比,自定义站点定义具有以下优点:
    • 数据直接存储在 Web 服务器上,因此性能通常更好。

至少,我认为上述文章并不完整,并且根据我对 SharePoint 架构的了解,我认为其中几篇文章具有误导性。

我读了另一篇反对性能差异的博客文章,但我找不到链接。

有帮助吗?

解决方案

使用网站模板与网站定义的性能影响通常被夸大了。

为什么?

好吧,让我们举个例子:

  1. 您采用团队网站站点定义。
  2. 您将其另存为新的站点模板
  3. 然后,您可以基于此新网站模板创建一个新的子网站。

你有什么?好吧,要记住的重要一点是“重影”发生在页面级别,而不是站点级别。由于您没有自定义任何页面,因此您访问的任何页面仍然直接来自站点定义,直接来自文件系统。

想要证明这一点,这里有两个测试:

第一次测试

  1. 尝试修改原始站点定义中的default.aspx页面。
  2. 检查您的网站模板,注意您看到了修改。
  3. 它对文件系统来说仍然是“幽灵”

第二次测试

  1. 创建新的站点定义。
  2. 基于此新站点定义创建一个新站点。
  3. 创建一个新的站点模板
  4. 将网站模板发送给使用 SharePoint 的伙伴,并要求他们基于该模板创建一个新的子网站。

它会失败。为什么?因为他们的机器上不存在站点定义。

因此,回到您的问题,“SharePoint 网站模板的性能真的不如网站定义吗?”我的回答是:“在您决定使用网站定义或网站模板时,不应考虑性能因素,而应该考虑您的功能目标”。现在它引起了争议,但对我来说,很少有理由选择站点定义而不是创建功能。

就“鬼魂”而言。是的,定制后您的页面将存储在数据库中,是的,您将必须进行数据库往返才能获取它。但是,SharePoint 很智能,当然会缓存此内容。所以,从理论上讲,是的,它的速度较慢,但​​实际上,没有人真正注意到。

重影自 2003 年以来就已经出现在该产品中(可能在那之前就出现在 STS 中,不记得了),我从未见过关于它对性能影响的官方指南,也没有人在“它速度较慢”的评论之外进行猜测。

这让我相信,这并不是真正值得担心的。“幽灵”页面更大的担忧是维护它们所带来的困难,但是,对于 2007 和母版页来说,这是一个小得多的问题。

其他提示

消除重影问题与其说是性能问题,不如说是升级问题。

在 SPS2003 中,消除重影有一个性能缺陷。其中大部分问题已在 SharePoint 2007 中得到解决。一方面,非幻影页面由 SPVirtualPathProvider 作为非编译页面运行 - 这实际上至少为第一页提供了更快的渲染速度。

真正的杀手无重影(或定制 - 谁曾认为重命名该术语并切换“un”是个好主意?;-) 是当您想要升级时,您的页面、页面布局、母版页、内容类型等都是自定义的。如果您曾经尝试过通过广泛的自定义对 MOSS 网站进行外观升级,您也会知道在不丢失自定义页面中包含的布局或功能的情况下让所有内容都显示新设计是多么痛苦。

HTH系列 安德斯·拉斯克

站点定义的性能更高,因为它们缓存在文件系统上,无论模板是否存储在数据库中,并且每次呈现页面时都必须编译和执行。此外,与基于现有网站模板的模板不同,自定义网站定义是独立升级的。

还有其他差异很好地概述在 这篇博文这个更新了.

这里的问题称为重影。开箱即用的 SharePoint 网站在 SharePoint 网站的 12 个配置单元中存储许多文件(包括母版页和页面布局)。当对这些文件发出请求时,SharePoint 足够智能来执行磁盘读取操作。

可以对这些页面进行“Un-Ghost”操作。本质上,创建对存储在 SharePoint 内容数据库而不是文件系统中的页面的修改。对非幻影页面的请求将导致数据库往返(从数据库中选择、返回文件的字节等)。这必然会导致大量的额外工作。当您谈论数百或数千个用户访问该站点时,此数据库往返就成为性能问题。

因此,频繁使用的网站的 SharePoint 自定义网站定义将希望在 Web 服务器文件系统上存储尽可能多的文件(并缓存......脱离其他一切)。站点定义不一定存储在文件系统上,但该过程(除了更加复杂之外)可以更好地控制任何自定义项目的存储位置。

两个博客讨论该问题的示例。http://itfootprint.wordpress.com/2007/04/18/sharepoint-site-template-vs-site-definition/ http://my.advisor.com/doc/17614

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top