繁体   English   中英

是否真的需要Magento加载的所有默认脚本?

[英]Are all of the default scripts loaded by Magento really needed?

以下是Magento默认加载的所有脚本的列表:

../js/prototype/prototype.js    //prototype library
../js/prototype/validation.js   //don't know what this does
../js/scriptaculous/builder.js  //don't know what this does
../js/scriptaculous/effects.js  //base scriptaculous effects library?
../js/scriptaculous/dragdrop.js //component of scriptaculous effects
../js/scriptaculous/controls.js //not sure?
../js/scriptaculous/slider.js   //more scriptaculous effects
../js/varien/js.js          //don't know what this is
../js/varien/form.js        //form validation scripts?
../js/varien/menu.js        //menu/drop down menu scripts
../js/mage/translate.js     //don't know what this does
../js/mage/cookies.js       //don't know what this does

这些脚本总共有316.8K的javascript ...都处于各种缩小状态(例如,prototype.js没有缩小)。

所以我的第一个问题:

1)除了prototype.js之外,还有其他所有需要的东西吗?

2)删除这些脚本的“正确”方法是什么? 布局更新? 或者在模板中硬编码?

我想尽可能减轻我的magento网站的负载。

谢谢!

回答第1部分 - 并非所有这些都是必需的,但大多数都是,这取决于你的主题。 一个默认的magento主题全部使用它们,但是一个自定义的主题几乎肯定不需要所有的scriptaculous。

几乎总是需要varien,mage和prototype这些,创建一个主题,消除所有这些是非常非常,因为一些依赖于它们的页面javascript实际上不是来自主题而是来自核心php文件。

在简单的主题上,我有很好的结果删除了拖放和滑块,因为我没有使用产品缩放显示。 如果你没有使用Magento菜单,你可以删除菜单,但只有当你准备制作虚拟js函数来捕获任何留下的调用时 - 菜单导航对象直接从需要的php层注入javascript函数被抓住(或者更好的是你可以滚动自己的类别导航对象,而不是这样做!)。

对于第2部分 - 编辑主题page.xml布局,将其从<block type="page/html_head" name="head" as="head">标记中删除。 我建议你把它们评论出去,然后测试每一个。

您可以通过将javascript标记添加到相应布局文件的head部分,将所需的javascript文件注入到需要它们的页面类型中。 作为如何完成此操作的示例,请查看默认的sendfriend.xml布局文件,该文件仅将product.js文件添加到头部以用于需要它的页面。

如果你开始根据页面类型积极地添加/删除javascript,你还需要考虑Magento如何合并javascript文件。 在配置屏幕的开发者区域中有一个设置来合并javascript文件,打开它是一件非常好的事情。 这将合并使用“addJs”或“addItem”注入的头区域内的所有javascript文件,项目类型为“js”或“skin_js”。

但正因如此,如果你开始逐页包含/排除脚本,你会发现你在不同的页面上生成不同的合并js文件 - 破坏了缓存单个大型js文件的大部分好处!

为了充分利用这两个世界你应该能够使用但不指定项目类型将js注入头部,从而阻止该文件被合并 - 但我还没有尝试过。 如果这样可行,您将发现核心库已合并,并且您的每页自定义文件都是单独包含的,这意味着您可以缓存大文件,并且只下载更改的位。

我不能说它们的全部内容但我知道大多数都需要烦恼,因为Magento确实使用了分配JS。

这不能回答你的问题,但你可以通过进入系统 - >配置 - >高级 - >开发人员 - > JavaScript设置,最小化它们对Magento 1.4.01(可能在1.4.0中)的影响,然后将它们全部合并,这样你就可以了只有一个HTTP请求(可以用CSS完成)。

我猜想去除它们的“最正确”的方法是制作一个不需要它们的新主题而不包括它们因为它们不需要它们所以在回答问题2时我会说模板肯定会是前进的方向。 我不记得控制它的确切模板,但我确信我已经看到一个包含大量JS / CSS的模板

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM