最优秀的不一定是最合适的,作为PHP开源电商平台No.1, Magento在加拿大和美国有著大量的拥簇著,其中主要使用Magento1,而Magento2更为优秀,但是是否值得我们下决心选用呢?本文旨在做一些粗略的分析,仅供参考。
一、优点
1. Magento2 有著教科书式的优秀架构,这点不是其它独立php电商系统可以比肩的。Magento2引入symfony依赖注入式编程,可以让组件开发变得更为自由灵活。
2. 采用EAV模型。EAV是英文Entity实体、Attribute属性和Value值的首字母缩写,Magento采用EAV模型极大的增加了数据字段的灵活性,可以在不修改代码或模板的情况下添加或删除属性。EAV模型不仅仅允许数据库快速扩充,而且更为高效。因为它只允许非空属性,而不需在数据库中预留空间存储空值。
3. Magento2对Varnish和Redis的支持非常好,可以有效提升系统响应速度。
二、缺点
1. 学习曲线陡峭,上手困难,这就意味著开发投入成本大,需要精通PHP的专门人才进行二次开发。
2. EAV模型增加数据库服务器负担,同样并发请求或者同样数据量,Magento2更吃硬件,无疑增加硬件成本。
3. 前端架构选型很不友好,采用当时较为流行的knockoutjs UI组件,现在已经很少人将该前端js框架用于商业用途,特别是现在有React,AngularJS, Vue更好的方案可以选择。
4. Magento2的bug很多,直到到Magento2.2才逐渐趋于稳定。
鉴于上面的优缺点简单分析,我们虽然对Magento2的架构非常欣赏,但并不建议新电商项目选择Magento2进行开发。我们在加拿大温哥华和多伦多很多地方的企业一直还在使用Magento1, 我经常被问到是否应该升级他们的Magento1到Magento2, 我通常的回答是Magento1升级到Magento2仍然不是一件容易的事,都需要慎重考虑。