新版本开源电商架构Magento 2.0和现行版本 1.9之间的区别,是否有必要升级到2.0?

by zhf258534186 on 2016-03-08 20:48 viewed: 515 times
跟着JC学习在美国做business, sales, marketing,请来订阅JC写的剑知商务快报
首先介绍一下背景知识。很多想自己建一个电子商务网站的朋友现在选择Shopify来建站。如果只想要卖几个简单的产品,使用Shopify是可以无脑操作的。没有入门门槛。当前大部分对自己电子商务网站有额外 要求的客户都会要求使用Magento来作为解决方案。Magento是开源的,拥有最大的开发者社群,极度可配置,可扩展。

最近本人收到了几个正在使用Magento的客户的询问:"Frank,我看网上说Magento2.0出来了,翻天覆地的变化,性能提高百分之一百万!吹牛逼呢是吧。。要不咱也升级到Magento 2.0吧!对了,你觉得升级到2.0有没有必要啊?"

个人认为,不!我们当前不需要升级到Magento 2.0。这篇文章的后半部分会详述Magento 2.0的根本改变。先说一下为什么个人认为,不推荐升级到 Magento 2.0。

我们升级系统总要有一个合理的理由和动机吧。鉴于大家都说Magento 2.0性能提升了,那么,我们升级的理由和动机就是当前自己这一套电子商务解决方案(基于Magento 1.9)的性能不行。太慢!

实际上大部分的客户的系统一点也不慢。所以没有必要升级。(一个 1CPU,4G RAM的云服务器在正常情况下,搭载Magento1.9 可以经受住 并发的5000个Page View)。如果有一些对性能有特别大追求的客户,我往往是建议购买更牛逼的云服务器。。谁让您对速度有特殊要求呢。。是吧。。多花点钱吧~

哦!对了。不好意思。我忘了解释"翻天覆地"这几个字了!新版本2.0和1.9之间的变化是翻天覆地的,翻天覆地大家都懂吧? 这意味着,所有的插件和App,都不能用了。所有的插件和App的提供商都需要重新为 2.0这个新版本开发 插件和App。

往往客户听到这里,都会说:好吧。。不升级了。等到插件和App的开发者搞定2.0版本的插件和App以后再升级吧!

Bingo!回答正确!当前不应该升级的最主要原因就是第三方插件和App的开发者社群没有跟上 2.0版本。同时1.9版本其实并不慢! 个人估计再等1-2年再升级都没问题。

以下内容开始有一些偏geek了,对技术没有兴趣的朋友们可以直接跳到文章末尾了。。

--------------------------------分割线------------------------------------

为什么2.0的性能提高了?
1. 可以使用PHP7。
2. 更多的Cache方面的支持。
3. 更加直接的MVC结构。
4. UI库,方便开发者开发。

1. 可以使用PHP7。

这个实在是太容易理解了,PHP7当然比PHP6要快了。。。2.0版本在使用PHP7的情况下,必须快了至少30个百分点吧。

2. 更多Cache方面的支持。

这里我多叨叨几句吧。Magento的最大特色之一就是高度模块化。任何人需要任何功能,直接开发模块,即插即用。模块化的小缺点之一就是模块都是单独加载的,页面动态化程度过高,比较消耗资源。随便拿出一个Magneto站点的主页,好几十个小模块(小Block)都是动态加载的,比如 slider,best selling products等等等等。

于是乎,这里产生了一个灰常重大的课题:如何使用Cache来加速模块的加载。。然后大家就整出了一箩筐的解决方案,各有优劣。To name a few: Varnish, Redis, APC, Memcache, FPC。。。

Magento 2.0版本对这些Cache技术的支持更好了。意味着,总体来说,那就变快了呗。如果你有兴趣,当前的主流做法是:使用Varnish做HTTP反向代理,这是第一层的Cache。然后使用Redis+APC做另外一层的Cache。 若是各位有兴趣,下次本人专门讲解这几个Cache方面的技术。

3. MVC结构变了。

这个解释了为什么老的插件和App不能直接用于2.0版本。连根目录下面的文件结构都改变了。。。以前有9个子目录,现在只有5个了。其实这个并不妨碍老的插件迁移到新的framework呀?

呃,没错。但是,数据库结构变了。。

其实数据库结构和文件结构改变了也没啥。。。因为只要按照格式的对应关系,把第三方插件相关的数据给转过去就好了。。

听起来似乎有道理。但是我们忽略了一个最基本的事情:第三方插件的代码本身无法使用,因为以前的MVC结构变了。。。尼玛。。不好意思,爆粗口了。。

具体变化,可以谷歌搜索 老前辈Alan Storm的帖子。我总结一下:以前是controller接收到请求以后开始调用model,然后开始分配给view去做展示。有时候controller会把请求pass到另外一个 controller去。这样一个页面的很多动态结果就是这样出来的:第一个controller调用了model,转给view,view里面带有其他 的block,然后每一个block自己又走一遍自己对应的controller,得到model,然后展示子view。。然后周而复始。。。

2.0的Magento变成了Model View View Model模式。也就是说,任意一个请求接到以后,Controller会直接决定让哪一个View负责。View按照自己的需求加载子View和Model。

Object的结构也变了,Magento 2.0的Object manager采用了dependency injection的模式(自己做一个广告,本人早年技术博客里面有关于DI的介绍: http://www.geek-alpha.com/java /understand-dependency-injection/)。这个时候自己想想,第一个接受到请求的controller其实根本不知道丫最后要展现一个什么样的页面,因为数据object是在最后一刻被注入的。

采用Dependency Injection很大程度的降低了耦合,同时让开发等变得容易了。

4. 新增了UI库。

当你看到上面第三点的时候,心里面肯定在想:这翻天覆地的变化,对于这么一个庞大的开发者社区,开发者岂不是都骂翻天了?

对。。你说的没错。。开发者确实骂翻天了。。本来插件开发完成以后 坐在家里面数钱就行了。。结果。。结果又要重新发开了!

但是咧~~~~开发者听说新增了UI库以后,一个个像是被戳中了G点一样,又兴奋起来了。。因为UI库的新增,超级大的节约了开发的时间。

个人对UI库进行了一些调查:打开UI库看到了一箩筐LESS文件。呃。。本人还是有点过时了。。神马是LESS?

LSSS就是动态的CSS。还记得CSS里面我们说想要一个东西的颜色是red么?LESS里面可以定义变量。。意味着我可以编写LESS文件,然后最后赋值进去。比如:

@pale-green-color: #4D926F;

#header {
  color: @pale-green-color;
}
h2 {
  color: @pale-green-color;
}

会被编译成:

#header {
  color: #4D926F;
}
h2 {
  color: #4D926F;
}

哈哈哈,本人兴奋了。。简直完美呀。相当于有了一个统一的模板。。开发人员只需要控制变量即可。

UI库还是responsive的,真是期待呢。其实一旦规定了UI库里面元素的规格,便可以根据不同的屏幕大小,规定mobile,tablet下面的规格。比如说,一个按钮,开发人员只可以选择颜色,大小等已经固定了。而且这个按钮不同屏幕下都可以显示的很完美。。

牛了逼了。。。

因此,有得有失,虽然需要重新写一些代码,但是因为UI库的加入,节约了时间。而且新的MVVM结构,也让开发变得容易了。

--------------------------------分割线------------------------------------

写在文章末尾的话:

总而言之,个人不建议当前升级到2.0版本。应该等开发者社区跟上步伐以后才升级。大概2017年中旬左右可以的。

个人建议,如果您想自己的电子商务网站拥有很多个性化的功能,并且以后想把自己的网站做大做强的,尽量一开始就使用Magento来搭建网站。 初步统计,如果一个Shopify的站点需要达到和Magento一样多的功能,大概每一个月花在插件上面的开销要到1000美金左右(具体的计算会以后发帖跟大家共享)。

有兴趣搭建自己的电子商务网站的朋友(洛杉矶附近的)可以找我来咨询,本人提供电子商务网站方面的咨询服务,建站服务,技术支持以及站点上线以后的推广和运营指导。在电子商务网站方面JC前辈是专家,大家有问题可以多和前辈交流。JC前辈在技术和经验方面都非常丰富。

Frank Zhang
A freelancer, open for jobs.
普通公司网站建站, 电子商务网站建站, 网络爬虫, 网络于计算机信息安全咨询
邮箱: geekalpha2011@gmail.com, 网址: www.geek-alpha.com

本文版权属于剑知商务网。未经我们同意的转载,将追究法律责任。

学习在美国做business, sales, marketing,请来订阅JC写的剑知商务快报

VIP俱乐部

美国business案例分析
美国网站推广技巧
独立电商网站如何推广
独立电商网站seo优化
Email marketing技巧
同其他VIP会员交流
详情请看: 如何加入VIP
About | Join VIP | FAQ | Privacy Policy
Copyright © 2016, All Rights Reserved.