“约定优于配置”与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模块等。关闭掉自己不需要的模块是强烈建议做的一件事,前面提到有些新手觉得这个无关紧要,是因为没有意识到关闭无用模块对性能的提升其实挺明显。有点扯远了,关模块这个其实是另一个值得一讲的话题,有时间可以单独写一章讲一讲。

目录
相关文章
|
缓存 NoSQL 架构师
Redis 三种批量查询技巧,高并发场景下的利器
在高并发场景下,巧妙地利用缓存批量查询技巧能够显著提高系统性能。 在笔者看来,熟练掌握细粒度的缓存使用是每位架构师必备的技能。因此,在本文中,我们将深入探讨 Redis 中批量查询的一些技巧,希望能够给你带来一些启发。
Redis 三种批量查询技巧,高并发场景下的利器
|
机器学习/深度学习
大模型开发:解释正则化及其在机器学习中的作用。
正则化是防止机器学习过拟合的技术,通过限制模型参数和控制复杂度避免过拟合。它包含L1和L2正则化,前者产生稀疏解,后者适度缩小参数。选择合适的正则化方法和强度对模型性能关键,常用交叉验证评估。
438 1
|
缓存 运维 Shell
幻兽帕鲁爆内存优化方案
最近有很多小伙伴反馈说4C16G的服务器玩时间久了经常出现内存过满自动重启的情况,现在总结下linux和windows系统下怎么进行优化。
|
12月前
|
机器学习/深度学习 存储 人工智能
量子计算的现状与未来:从实验室到商用
【10月更文挑战第29天】量子计算正从理论探索迈向实际应用,代表了计算技术的革命性突破。本文探讨了量子计算的现状、挑战、未来趋势及商用潜力,包括药物研发、金融工程、大数据和人工智能等多个领域的应用前景。尽管面临量子比特稳定性、错误率控制等挑战,但量子计算有望成为推动科技革命的关键力量。
|
消息中间件 搜索推荐 小程序
开源埋点用户行为分析方案-ClickLog埋点(ClkLog)
ClkLog 是一款记录用户行为分析和画像的免费可商用开源软件,技术人员可快速搭建私有的应用系统。项目基于神策分析SDK,采用ClickHouse数据库对采集数据进行存储,采用前后端分离的方式来实现的访问统计和用户画像分析系统。在这里,你可以轻松看到用户访问网页、APP、小程序或业务系统的行为轨迹,同时也可以从时间、地域、渠道、用户访客类型等多维度了解用户的全方位信息,完美助力大数据用户画像、实时归因/离线归因分析、漏斗分析、大数据推荐场景。
1421 2
开源埋点用户行为分析方案-ClickLog埋点(ClkLog)
|
人工智能 监控 安全
揭秘AI技术在智能家居中的应用
【9月更文挑战第6天】本文深入探讨了AI技术如何在智能家居领域大放异彩。从智能语音助手到自动化家居控制,再到安全监控和能源管理,AI技术正在改变我们的生活方式。文章还将通过代码示例,展示如何利用AI技术实现家居自动化控制。
571 5
|
数据采集 机器学习/深度学习 自然语言处理
一文讲懂大模型调优技术
随着AI技术的发展,大模型如GPT系列、BERT等成为推动自然语言处理和计算机视觉领域进步的重要驱动力。然而,大模型的调优过程复杂且资源消耗巨大,对开发者构成严峻挑战。本文旨在全面解析大模型调优的关键技术,涵盖数据预处理、模型架构调整、超参数优化、正则化与泛化能力提升,以及分布式训练与并行优化等内容,为开发者提供系统性的调优指南。
|
人工智能 弹性计算 API
通义万相AI绘画创作体验评测
从使用者的角度解读通义万相AI绘画创作方案的优与劣
11353 12
|
数据可视化 程序员
IDEA插件-Rainbow Variable/IDEA彩色变量
"Rainbow Variable"是一款用于 IntelliJ IDEA 的插件,旨在提高代码中变量的可视化区分度。通过使方法中的参数和变量呈现不同的颜色,提高代码可读性。 插件允许用户自定义颜色,使得在同一个函数内部相同的变量采用相同的颜色,从而避免误用。
2490 0
IDEA插件-Rainbow Variable/IDEA彩色变量
|
Java iOS开发 MacOS
MacOS切换JDK版本
MacOS切换JDK版本
6210 0