2010-06-08 21 views
8

Dưới đây là một danh sách của tất cả các kịch bản nạp bởi Magento theo mặc định:Có phải tất cả các tập lệnh mặc định được tải bởi Magento thực sự cần thiết không?

../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 

các kịch bản tổng 316.8K javascript ... tất cả trong trạng thái khác nhau bị minified (ví dụ, prototype.js không minified).

Vì vậy, câu hỏi đầu tiên của tôi:

1) Ngoài prototype.js, tất cả những người khác thực sự cần thiết phải không?

2) Cách "đúng" để xóa các tập lệnh này là gì? Cập nhật bố cục? Hoặc được mã hóa cứng trong các mẫu?

Tôi muốn làm cho tải trang Magento của tôi dưới dạng trọng lượng nhẹ nhất có thể.

cảm ơn!

+0

Magento: Tiện ích mở rộng Chuyên nghiệp, Thanh lịch & Nhẹ! Mang lại cho bạn bởi JoomlArt.com. Bạn muốn làm cho nó thậm chí nhiều hơn Leightweight? :) – Younes

+0

Là một tối ưu hóa tầm thường, rút ​​gọn prototype.js :) –

+0

Tôi đã tự hỏi như vậy, tôi đang cố gắng tăng tốc trang web của mình. Tôi vừa bật gzip và kích thước tệp javascript của tôi giảm 70%. – dardub

Trả lời

5

Để trả lời Phần 1 - không không phải tất cả trong số này được yêu cầu, nhưng nhất là và nó phụ thuộc vào chủ đề của bạn. Một chủ đề Magento mặc định sử dụng tất cả chúng, nhưng một tùy chỉnh gần như chắc chắn sẽ không cần tất cả những người viết kịch bản.

Các biến, mage và nguyên mẫu hầu như luôn được yêu cầu, tạo chủ đề không phù hợp với tất cả những điều này rất, rất khó bởi vì một số javascript trong trang phụ thuộc vào chúng thực sự không xuất phát từ chủ đề nhưng từ các tệp php cốt lõi.

Về chủ đề đơn giản, tôi đã có kết quả tốt khi xóa hình thu nhỏ và thanh trượt vì tôi không sử dụng màn hình thu phóng sản phẩm. Bạn có thể xóa menu nếu bạn không sử dụng menu Magento, nhưng chỉ khi bạn chuẩn bị thực hiện các hàm jummy giả để bắt bất kỳ cuộc gọi nào bị bỏ lại phía sau - đối tượng điều hướng trình đơn tiêm hàm javascript trực tiếp từ lớp php cần bị bắt (hoặc tốt hơn bạn có thể cuộn đối tượng điều hướng danh mục của riêng bạn mà không làm điều này!).

Đối Phần 2 - chỉnh sửa chủ đề của bạn page.xml bố trí để loại bỏ chúng khỏi thẻ <block type="page/html_head" name="head" as="head"> . Tôi đề nghị bình luận chúng ra và thử nghiệm mỗi khi bạn đi.

Bạn có thể chèn tệp javascript cần thiết vào các loại trang cần chúng bằng cách thêm thẻ javascript vào phần đầu của tệp bố cục thích hợp. Như một ví dụ về cách thức này được thực hiện có một cái nhìn tại các bạn gửi mặc định.tệp bố cục xml chỉ thêm tệp product.js vào đầu cho các trang cần có tệp đó.

Nếu bạn bắt đầu thêm/xóa javascript mạnh dựa trên loại trang, bạn cũng cần xem xét cách Magento hợp nhất các tệp javascript. Có một cài đặt trong khu vực nhà phát triển của màn hình cấu hình để hợp nhất các tệp javascript, việc bật tính năng này là một điều rất tốt. Việc này kết hợp tất cả các tệp javascript bên trong vùng đầu đã được chèn bằng cách sử dụng "addJs" hoặc "addItem" với một loại mục "js" hoặc "skin_js". NHƯNG vì điều này nếu bạn bắt đầu bao gồm/loại trừ tập lệnh trên cơ sở từng trang, bạn sẽ thấy rằng bạn đang tạo các tệp js đã hợp nhất khác nhau trên các trang khác nhau - phá hủy hầu hết các lợi ích của bộ nhớ đệm một tệp js lớn duy nhất !

Để tận dụng tốt nhất cả hai thế giới, bạn có thể chèn js vào đầu bằng cách sử dụng nhưng không chỉ định loại mục, do đó ngăn tệp đó được hợp nhất - nhưng tôi chưa thử. Nếu điều này làm việc bạn sẽ tìm thấy các thư viện cốt lõi được sáp nhập và các tệp tùy chỉnh trên mỗi trang của bạn được bao gồm riêng lẻ, nghĩa là bạn có bộ nhớ cache lớn và chúng chỉ tải xuống bit thay đổi.

1

Tôi không thể nói tất cả chúng là gì nhưng tôi biết rằng hầu hết trong số chúng là cần thiết một cách khó chịu vì Magento không sử dụng tất cả JS.

Điều này không trả lời câu hỏi của bạn nhưng bạn có thể giảm thiểu hiệu ứng của chúng với Magento 1.4.01 (có thể trong 1.4.0) bằng cách vào System -> Config -> Advanced -> Developer -> JavaScript settings và sau đó hợp nhất tất cả vì vậy bạn chỉ có một yêu cầu HTTP (tương tự có thể được thực hiện với CSS).

Tôi đoán rằng cách "chính xác nhất" để loại bỏ chúng là tạo chủ đề mới không cần chúng và không bao gồm chúng vì chúng không cần thiết để trả lời cho câu hỏi 2 tôi sẽ nói các mẫu nhất định sẽ là con đường phía trước. Tôi không thể nhớ những mẫu chính xác điều khiển này, nhưng tôi chắc chắn rằng tôi đã thấy một trong đó có một danh sách lớn của JS/CSS bao gồm

+0

JS thường được định nghĩa bên trong tệp page.xml (hoặc các tệp layout.xml) khác. +1 trên các tệp đó nói chung là cần thiết để vận hành trang web, mặc dù không phải mọi tập lệnh đều được sử dụng trên mọi trang. –

+0

@Joseph Mastey - ya, mặc dù chúng không cần thiết trên mọi trang, tôi chỉ tìm thấy nó như một sự lãng phí lớn để bao gồm 3 thư viện UI khác nhau chỉ để làm một menu thả xuống. – pxl

+0

việc hợp nhất các tệp JS che dấu vấn đề, nhưng tôi quan tâm đến việc giải quyết vấn đề. Tôi tốt với việc sử dụng nguyên mẫu, vì vậy đây không phải là một "làm thế nào để tôi sử dụng jquery với magento" bài. Và tôi tốt với việc tạo ra các bản cập nhật bố trí trên mỗi trang để chỉ bao gồm các js cần thiết. Tôi chỉ không thích bao gồm các tài nguyên chỉ được sử dụng tối thiểu. – pxl

Các vấn đề liên quan