我们有很多小的CSS和JS文件,启用合并似乎是一个不错的选择。
每个页面(主页,类别页面,产品详细信息页面)上都会使用许多CSS和JS文件。
每当我们看到在每个页面上再次加载了不同的合并文件时,即使包含的CSS也必须重叠。
我们如何避免这种情况并重用更多数据?
.css和.js文件。在Magento默认安装中,实际上.css文件在全局上几乎是相同的,因此合并后的文件具有相同的哈希值。但这.js有很大的不同-因此,产品页面和类别页面等等都有一个新组合的文件-始终包括完整的原型库。
我们有很多小的CSS和JS文件,启用合并似乎是一个不错的选择。
每个页面(主页,类别页面,产品详细信息页面)上都会使用许多CSS和JS文件。
每当我们看到在每个页面上再次加载了不同的合并文件时,即使包含的CSS也必须重叠。
我们如何避免这种情况并重用更多数据?
.css和.js文件。在Magento默认安装中,实际上.css文件在全局上几乎是相同的,因此合并后的文件具有相同的哈希值。但这.js有很大的不同-因此,产品页面和类别页面等等都有一个新组合的文件-始终包括完整的原型库。
Answers:
简短答案:永远不要启用Magento的JS / CSS合并功能。总体而言,在典型结帐的整个生命周期中,性能要比单独发送每项资产差。
长答案:您应该只向用户提供一个CSS文件。多个文件将阻止渲染,直到所有CSS被下载。除非您要提供大量的CSS,否则一次发送所有CSS都是有好处的,然后浏览器就会对其进行缓存。使用Sass或LESS之类的预处理程序可以将此步骤带入您的构建过程,而不是让Magento效率低下。
对于JS,理想情况下,您不应该将这些服务器端结合在一起。像AMD / RequireJS这样的客户端脚本加载器是更好的选择,可以帮助管理依赖关系,而Magento的Layout XML则不是。在现实世界中,虽然Magento会在结帐流程中的多个位置插入脚本。您最好还是选择多个请求的初始页面加载命中率,然后再使用单独但已缓存的资产。
Fooman Speedster Advanced扩展是您明智地组合资产而无需重复的最佳选择(今天)。
Magento 1.x架构在一定程度上限制了您的工作,该架构从大量不良的前端性能实践开始。改变那艘船的航向是不现实的。贡献给Magento 2。
我们一直在使用Fooman Speedster Magento Extension。这是一个很棒的扩展,可以处理CSS和JS文件的合并以提高页面的性能。
从页面:
通过组合,压缩和缓存Javascript和CSS文件来加快存储速度。Fooman Speedster将多个Javascript和CSS文件组合到一个Javascript文件和一个CSS文件中,以实现更快的页面加载时间。
uglifyjs --compress并更好地处理注释,则使用我的代码可以得到大约4%的额外改进。我从节点使用uglifyjs v3。