2010-05-02 31 views
9

trang khác nhau của trang web của tôi có những nhu cầu khác nhau js (plug-in chủ yếu), một số cần một hộp đèn, một số dont, một số cần một băng chuyền, một số dont, vvcác tệp js nhỏ khác nhau trên mỗi trang VS. 1x tệp js toàn trang web?

Liên quan đến tốc độ pageloading nên tôi

tùy chọn 1 - tài liệu tham khảo mỗi js tập tin khi nó là cần thiết:

nên một trang có thể có:

<script type="text/javascript" src="js/carousel/scrollable.js"></script>  
<script type="text/javascript" src="js/jquery.easydrag.js"></script> 
<script type="text/javascript" src="js/colorbox/jquery.colorbox-min.js"></script> 

và khác có:

<script type="text/javascript" src="st_wd_assets/js/carousel/scrollable.js"></script> 
<script type="text/javascript" src="st_wd_assets/js/typewatch.js"></script> 

phương án 2 - kết hợp và nén thành một site_wide.js file:

vì vậy mỗi trang sẽ tham khảo:

<script type="text/javascript" src="js/site_wide.js"></script> 

sẽ có bộ chọn không sử dụng/sự kiện người nghe, mặc dù như thế nào xấu là điều này? Tôi sẽ bao gồm bất kỳ ghi chú/chứng nhận plugin nào ở đầu tệp site_wide.js

+0

http://stackoverflow.com/questions/2707499/improving-javascript-load-times-concatenation-vs-many-cache/2707544#2707544 http://stackoverflow.com/questions/1495338/use-cache -file-or-one-more-http-request –

Trả lời

7

Thường là tốt nhất để combine these and serve one file, bạn đặt tiêu đề bộ nhớ cache để khách hàng nắm giữ nó, không yêu cầu mỗi trang. Hãy nhớ rằng nếu một bộ chọn jQuery không tìm thấy gì, nó không làm bất cứ điều gì vì vậy đó không phải là một thỏa thuận lớn miễn là bạn đang sử dụng một phần tốt của kịch bản của bạn mỗi trang, nó chỉ tốt mà nó có bộ chọn không khớp.

Make sure it's being cached by the client though, tất cả công việc của bạn là vô ích. Đồng thời đảm bảo rằng it's served minified and gzipped. Và cuối cùng, hãy xem lưu trữ main libraries from a CDN của bạn.

+0

Hãy nhớ rằng một số máy khách nhất định (như iPhones) không lưu trữ các tệp tin> 15 KB. Ngoài ra, lạ là câu trả lời này http://stackoverflow.com/questions/2707499/improving-javascript-load-times-concatenation-vs-many-cache/2707544#2707544 khuyến nghị điều ngược lại. –

+3

@Marcel - Giới hạn là> 25kb (và đó là kích thước ** không nén **, vì vậy khá thấp) :) Vì bạn đang tải thư viện ** chính nó ** mọi tải trang mặc dù, tình huống jQuery trên iPhone isn Thật tuyệt vời cho đến khi một bản dựng di động xuất hiện. Nếu bạn phải thực hiện chuyến đi khứ hồi cho ** bất kỳ một trong số các plugin của bạn (mà bạn sẽ phải sử dụng với hộp màu), tốt nhất là nên sử dụng cùng một lúc, vì yêu cầu chính là điều gây đau đớn trên thiết bị di động, một tệp lớn hơn với yêu cầu đó nhanh hơn nhiều so với việc tạo một yêu cầu khác. Là khách hàng của AT & T với dịch vụ một và crap/spotty, tôi có thể chứng thực điều này :) –

+0

Theo nhận xét này http://www.niallkennedy.com/blog/2008/02/iphone-cache-performance.html#comment255665 giới hạn kích thước hiện nay là 15 KB thay vì 25 KB (OS 3.1). Vì tôi không sở hữu một chiếc iPhone, tôi không thể kiểm tra điều này. Thật tuyệt khi biết rằng các yêu cầu HTTP có thể làm chậm các kết nối di động một cách đau đớn. –

2

Kết hợp chúng thành một tệp lớn bên ngoài và được rút gọn và bao gồm trong mỗi trang. Sau khi tải trang đầu tiên, trình duyệt sẽ lưu vào bộ nhớ cache, vì vậy người dùng sẽ chỉ tải xuống một lần.

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