问题:
某公司有 20 个站点,并希望在单个 CMS 实例中管理这些站点。
有许多可能的解决方案,但我正在研究的一个是具有 20 个子站点的单个 Umbraco 实例。
我只有 Sitecore 和 Sharepoint 的经验(在这些数量上)。
现在我的问题是;这在 Umbraco(最新版本)中表现如何?
有没有人有这个数量级的实际动手经验?
我个人对 Umbraco 的最大访问量是在中低流量站点上的 3 个子站点。
3 回答
在 Umbraco 界面本身内,站点越大越复杂,通常执行的速度就越慢。我这么说纯粹是因为随着站点结构的增长,项目的复杂性可能会增加。情况并非总是如此,但我建立了一个多地区、多站点的站点,每个站点都有多种语言,虽然发布的站点运行良好,但界面往往表现不佳。话虽如此,我很想回去检查和修改我的代码!
对数据库的点击是最严重的违规者。通常,由于所有已发布的内容都已缓存,因此发布的内容不必进行任何数据库调用。但是,当您创建一个宏、用户控件、视图、数据类型来查询 Umbraco API 以检索、、、Document
或对象时Content
,您正在访问数据库。ContentType
DocumentType
Media
如果您在经常调用的代码中执行此操作,例如 HttpModule,那么您的性能将受到影响,无论是在已发布站点还是在后台。显然,它有时是不可避免的,所以你只需要小心,实现一些缓存是非常宝贵的。
我还应该指出,目前的 Umbraco v6 处于测试阶段,并且已经修改了大规模实现PetaPoco的 API 。虽然这不会减轻我们作为开发人员所犯的编码错误,但它会使 API 比以前更加流畅!
我自己也为此苦苦挣扎。在一次 Umbraco 安装中,我有大约十几个子站点,所以没有你那么多,但其中一个有一个产品部分,其中包含数千种产品的单独页面,所以总页面数不少。
性能对我来说很好,但这里有几件(其中很多)需要记住的事情:
razor / xslt 中的任何查询都必须针对最具体到最一般的目标编写。起初,我有一些查询正在获取所有“废话”页面。好吧,这将枚举整个站点以查找这些页面。如果是一个非常小的网站,它会被拥有 3000 多个产品页面的网站拖慢。所以你必须小心地定位一个特定的节点,然后从那里开始(在我的例子中,遍历节点树到“subsiteHome”页面,然后从那里获取所有类型为“blah”的子节点)。
以这种方式包含它们的全部目的是使维护更容易并在站点之间共享资产。好吧,如果您要向其中一个子站点添加一些新功能,并且它需要某个软件包的最新版本,那么您必须准备好更新使用该软件包的所有其他子站点。即它可以(取决于您的子站点的规模和复杂性)成为一种平衡行为。
最后,我不认为带有 20 个子站点(例如,每个 100 页)的 Umbraco 安装的性能与具有 2000 个页面的单个站点有很大不同,但是您必须小心查询/获取内容的方式(通过 razor / xslt 查询),以及维护的好处是否真实。
我目前正在运行带有 +800 个站点和 +20.000 个内容节点的单个 Umbraco 安装,并且 Umbraco 运行良好,直到大约 200 个站点和 5.000 个节点,在那之后,我们开始在一些特定的后台任务中遇到奇怪的行为。前任。更改许多节点使用的文档类型,可能会导致一些不需要的前端效果,例如缺少内容等(请参阅此处的更多信息http://allan-laustsen.blogspot.dk/2012/03/umbraco-no-node-exists -cmscontentxml.html ) 但是我们已经修改了 Umbraco 的一些源代码,以便能够处理更多的节点和站点,并且到目前为止它运行顺利。所以我不知道“限制”是什么(还)