“约定优于配置”与Magento总结

简介:

预告中的性能测试,结果我不想贴了,因为改造前后实在是看不出明显差距(用的Apache的ab)睡觉。这个结果其实有心理准备,或者说在预料当中。虽然配置文件的加载(config.xml等)在Magento接收一个请求的整个进程中影响不小(处理时间和内存占用),但我这次的改造对配置文件总量的缩减不够明显,对最后结果的影响自然就不明显了。

瘦身效果多不明显,有数据为证,用Alan大神的Configviewer模块分别记录下改造前后的总配置文件(聚合之后),改造前的xml总行数(拷贝到编辑器格式化之后,后面同理)是9465行,改造之后(删除我所谓的所有可被约定所替代的配置)的总行数是8718行,瘦身的百分比只有大概8%,这个程度的瘦身,再加上我为了实现“按约定加载”所添加在核心的php代码的影响(负面影响)抵消,最终的结果也就很好理解了。

    这次的折腾到此为止确实是很像一次玩票,不过我倒是没有觉得所花的时间是浪费的。首先,再一次读了下Magento的核心代码(以前也看过,但没想那么多),核心代码写得好的部分可以学习,写的不好的部分也可以学习(作为反面例子),无法判定好或坏的部分,也可以作为思考的源泉。其次,我依然认为Magento某些方面有过度设计,与“约定优于配置”这个流行的思想不一致,虽然我之前做的改造没有取得明显的效果,但一方面除了前面指出的这些,Magento必然还有不少地方值得改造,需要时间和工具(比如APM)去挖掘,另一方面改造的思路没错,但我个人写的实现这个思路的具体代码本身可能还没有做到性能最优(越是底层的代码,对系统的整体性能的影响越大,特别是有并发的情况下)。通俗点讲,道路虽然是正确的,但路还是要一步一步走出来的。

    前面说到配置文件的加载对一次系统请求影响不小,其实有另一个很简单的方式去瘦身,这个方式算是Magento的常识之一,也是很多新手很容易不注意的地方(或者觉得无关紧要而忽视的)。这个方式就是关掉你所不需要的Magento模块,关闭的方式是去找app/etc/modules下面的xml,找到对应的模块定义,把模块状态改为false(或者直接删掉该文件)。以做中文站为例,在国内用不到的支付方式(paypal等),配送方式(dhl等)所有对应的模块都是可以直接关闭的。以Phoenix_Moneybookers模块为例,在上面的改造后基础上,仅仅是关闭Phoenix_Moneybookers模块,总配置文件的xml总行数就从8718下降到了8544行(我的改造费老大劲也就干掉了不到一千行尴尬

    

<config>
    <modules>
        <Phoenix_Moneybookers>
            <active>false</active>
            <codePool>community</codePool>
        </Phoenix_Moneybookers>
    </modules>
</config>

每个基于Magento做的网站都有各自不同的特性,国内或国外,食品或衣服,大众商品或个性商品等,所以就Magento自带模块(先不讨论第三方模块)来说,每个网站都会有一些自带模块是用不到的,A网站需要用A模块而不需要B模块,而B网站需要用B模块而不需要A模块等。关闭掉自己不需要的模块是强烈建议做的一件事,前面提到有些新手觉得这个无关紧要,是因为没有意识到关闭无用模块对性能的提升其实挺明显。有点扯远了,关模块这个其实是另一个值得一讲的话题,有时间可以单独写一章讲一讲。

目录
相关文章
|
5月前
|
安全 数据管理 PHP
详尽解析:如何在 Laravel 中实现软删除
【8月更文挑战第31天】
174 0
|
6月前
|
前端开发
若依修改,前端部署最初的样子,Ngnix部署最初的模样,配置域名/,就能够访问,最初的Ngnix的配置是怎样写的
若依修改,前端部署最初的样子,Ngnix部署最初的模样,配置域名/,就能够访问,最初的Ngnix的配置是怎样写的
|
机器学习/深度学习 人工智能 自然语言处理
发布日志记录、公开所有代码,Meta开放1750亿参数大模型,媲美GPT-3
发布日志记录、公开所有代码,Meta开放1750亿参数大模型,媲美GPT-3
143 0
|
Android开发
LitePal使用心得(激进查询等)以及小问题记录
LitePal使用心得(激进查询等)以及小问题记录
217 0
LitePal使用心得(激进查询等)以及小问题记录
|
存储 自然语言处理 安全
RavenDB起步--文档标识符
在关系型数据库中表一般情况下都会存在主键,这个主键在所在表中是唯一的不可重复的,同样在 RavenDB 中也存在这样的主键,它被成为文档标识符或文档ID。文档ID是由 UTF8 字符串组成的最多 2025 字节长度的全局唯一值。一般来说文档 ID 的组成规则是: 集合名称 + / + 唯一值 ,当然如果你有其他文档 ID 组成的规则也可以使用。下面我们来看一下 RavenDB 生成文档 ID 的策略。
253 0
RavenDB起步--文档标识符
|
数据安全/隐私保护 索引
利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)
原文:利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)      Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还可以修改已有的程序集,并且它支持多个运行时框架上例如:.
1418 0

热门文章

最新文章