合并CSS或JS时,会为每种页面类型生成一个新文件


15

我们有很多小的CSS和JS文件,启用合并似乎是一个不错的选择。

每个页面(主页,类别页面,产品详细信息页面)上都会使用许多CSS和JS文件。

每当我们看到在每个页面上再次加载了不同的合并文件时,即使包含的CSS也必须重叠。

我们如何避免这种情况并重用更多数据?


Alex,您是否在不同页面上包含不同的CSS和JS文件?您是否有链接或任何信息确认这种额外的合并/合并正在发生?前几天我看到了一些关于它的事,我想了解更多。最近在使我们的JS进行编译/合并时遇到了问题。
马克·韦斯顿

没有公共链接。但是,例如在产品页面上,我有一些额外.css.js文件。在Magento默认安装中,实际上.css文件在全局上几乎是相同的,因此合并后的文件具有相同的哈希值。但这.js有很大的不同-因此,产品页面和类别页面等等都有一个新组合的文件-始终包括完整的原型库。
亚历克斯

我在搜索“合并Javascript文件”功能,以帮助清除缓存。希望此评论更新搜索引擎并防止重复。
雷·福斯

Answers:


14

简短答案:永远不要启用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。


1
“为Magento 2贡献力量。”
benmarks

6

我们一直在使用Fooman Speedster Magento Extension。这是一个很棒的扩展,可以处理CSS和JS文件的合并以提高页面的性能。

从页面:

通过组合,压缩和缓存Javascript和CSS文件来加快存储速度。Fooman Speedster将多个Javascript和CSS文件组合到一个Javascript文件和一个CSS文件中,以实现更快的页面加载时间。


4
感谢您的提及。我想指出我的另一个免费Speedster扩展程序(Speedster Advanced),它带有一个主题优化程序,以减少合并的Javascript文件中的重复次数-请在此处查看我在Ibiza开发者大会上的演讲2012 magento-developers-paradise.com / wp-content / uploads /…了解详情。
Kristof在Fooman,2013年

我做了很多测试。它并不能消除所有冗余,但确实可以消除一些冗余。它不是最佳的消除器,但是冗余消除补偿了您可以使用Shell脚本自行完成的工作。@KristofatFooman如果您可以使用该系统uglifyjs --compress并更好地处理注释,则使用我的代码可以得到大约4%的额外改进。我从节点使用uglifyjs v3。
雷·福斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.