以下是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网站。
谢谢!
答案 0 :(得分:5)
要回答第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文件,打开它是一件非常好的事情。 这会合并头部区域内的所有javascript文件,这些文件是使用“addJs”或“addItem”注入的,项目类型为“js”或“skin_js”。
但是因为如果你开始逐页包含/排除脚本,你会发现你在不同的页面上生成不同的合并js文件 - 破坏了缓存单个大型js文件的大部分好处!
为了充分利用这两个世界你应该能够使用js注入头部但不指定项目类型,从而阻止该文件被合并 - 但我还没有尝试过。如果这样可行,您将发现核心库已合并,并且您的每页自定义文件都是单独包含的,这意味着您可以缓存大文件,并且只下载更改的位。
答案 1 :(得分:1)
我无法说出他们的全部内容,但我知道,当Magento使用分配的JS时,他们中的大多数都是烦人的。
这不能解答您的问题,但您可以通过进入系统 - &gt;来最小化它们对Magento 1.4.01(可能在1.4.0中)的影响。配置 - &gt;高级 - &gt;开发者 - &gt; JavaScript设置,然后将它们全部合并,这样您只有一个HTTP请求(可以使用CSS完成)。
我猜想去除它们的“最正确”的方法是制作一个不需要它们的新主题而不包括它们,因为它们不需要它们所以在回答问题2时我会说模板绝对是前进的方向。我不记得控制它的确切模板,但我确定我已经看到一个有大量JS / CSS包含的模板