2012-12-02 28 views
5

Tôi đang sử dụng jsSHA 1.3.1 mà tôi downloaded here và được sử dụng trong dự án học tập trên máy chủ cục bộ của mình. Nó đưa ra một kết quả hơi khác so với các bản sao tôi có bằng cách tham khảo từ xa như sau:Bao gồm thư viện javascript cục bộ và từ xa

<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script> 

Bản sao từ xa hoạt động tốt đối với tôi, bây giờ, nhờ vào câu trả lời tuyệt vời này bằng cách @Andreas here.

Nhưng nó để lại cho tôi một câu hỏi mới: lý do cơ bản để bao gồm một bản sao so với tham chiếu đến thư viện js từ xa là gì? Nó giống như 'thù địch' thư viện, cách ly ứng dụng của tôi từ những thay đổi tiếp theo trong mã?

+0

liên kết tải xuống được cập nhật lần cuối 4 tháng trước, trong khi kho lưu trữ có nhiều hoạt động trong khoảng thời gian đó http://stackoverflow.com/questions/5502540/should-github-be-used-as -a-cdn-cho-javascript-thư viện – dm03514

+0

Nếu bạn đang gonna hotlink GitHub, bạn nên thử các tập tin trong chi nhánh gh-trang đầu tiên, họ có nhiều khả năng là phiên bản ổn định mới nhất. Trong trường hợp này, đó là http://caligatio.github.com/jsSHA/sha.js – livibetter

+0

Việc đề cập vấn đề trong câu hỏi trước của bạn làm cho câu hỏi trở nên ít rõ ràng hơn. Có lẽ bạn có thể chỉnh sửa nó để làm cho câu hỏi * mới * nổi bật hơn một chút? (Không nói rằng bạn không nên liên kết với câu hỏi cũ, nhưng có thể bạn trước tiên có thể nêu ra câu hỏi mới và sau đó cung cấp liên kết tới câu hỏi cũ cho bất kỳ ai quan tâm.) Chúc mừng!Tôi thích câu hỏi và rất thích bỏ phiếu nhưng nó cần một chút quan tâm OP :-) –

Trả lời

8

Nếu ứng dụng của bạn có sẵn trên WWW, bạn nên cân nhắc sử dụng URL bên ngoài nổi tiếng.


<script type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" 
</script> 

Ví dụ này dưới đây được phiên bản rút gọn của jquery 1.8.0 từ các máy chủ của google.


  • Lợi ích thu được bằng phương pháp này xuất phát từ bộ nhớ đệm:

    • Bạn không muốn chuyến thăm đầu tiên người dùng tiềm năng làm cho trang web của bạn để được làm chậm và thất vọng. Nếu khách truy cập lần đầu tiên của bạn đã truy cập vào trang web của tôi sử dụng URL này cho jQuery, trình duyệt của cô ấy có thể đã lưu vào bộ nhớ cache để nó không cần tải nó.

    • Sử dụng các tài nguyên có phiên bản không thay đổi (jquery/1.8.0 thay vì thứ gì đó như jquery/current) đều giúp nhà phát triển không phải theo dõi các thay đổi trong mã sản xuất của họ và đảm bảo rằng các tài nguyên này có thể được lưu trong bộ nhớ cache.

    • Nếu tài nguyên phải được tải xuống và URL được lưu trữ trên CDN, bạn có khả năng nhận được độ trễ thấp hơn vì tài nguyên có thể sẽ được tải từ máy chủ gần mạng của người dùng hơn. URL trong ví dụ được lưu trữ trên Thư viện được lưu trữ trên Google là CDN. Xem https://developers.google.com/speed/libraries/devguide để biết thêm thông tin.

  • Một lý do khác thường thấy trong các cuộc thảo luận như vậy là khi tài nguyên phải được tải về, bạn sẽ có thể để có được tốt hơn client-side tải tài nguyên xử lý song song nếu tài nguyên không phải là trên các máy chủ của riêng bạn cùng với 10 nhiều tài nguyên hơn mà trang của bạn bao gồm vì trình duyệt giới hạn bản thân để tải lên một số nhỏ (6 hoặc hơn trong các trình duyệt hiện đại) của các tài nguyên tạo thành cùng một máy chủ.

  • Nếu ứng dụng web trên internet của bạn có tính bảo mật quan trọng, bạn phải kiểm soát phần lớn việc quản lý an toàn (và tài nguyên tĩnh không thay đổi hoặc gần như tương đối dễ quản lý an toàn).

    • Nếu ứng dụng ngân hàng điện tử của tôi chạy qua HTTPS phải dựa vào máy chủ HTTP của Google để phân phát, cả hai sẽ cấp cho Google quyền trên phần ứng dụng ngân hàng điện tử và loại bỏ thực tế tất cả lợi ích của kết nối HTTPS tới máy chủ của nó. Có rất ít những điều mà một kịch bản client giả mạo không thể làm ...

  • Nếu ứng dụng của bạn được truy cập tại địa phương, bạn nên có lẽ bao gồm nó trong ứng dụng của bạn cho cả hai hoạt động (truy cập đến các máy chủ của bạn nên được nhanh hơn truy cập một số máy chủ từ xa cả về độ trễ và băng thông) và lý do độ tin cậy (bạn không dựa vào kết nối internet bên ngoài và trên các máy chủ từ xa đang hoạt động).
3

Việc nhà phát triển có hài lòng với bạn 'hotlinking' đến thư viện JS hay không.

Về URL cụ thể mà bạn đã đăng,

https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js 

tôi sẽ cảnh giác với tham khảo đó. Đây là nhánh chính của mã nguồn, chúng có thể bao gồm các thay đổi đột phá bất kỳ lúc nào. Họ thậm chí có thể quyết định di chuyển và cơ cấu lại codebase của họ, trong trường hợp đó, ứng dụng của bạn sẽ phá vỡ vì URL ở trên sẽ dẫn đến 404.

Giải pháp tốt hơn thực sự là tham chiếu phiên bản cụ thể của thư viện. Điều này đảm bảo rằng ứng dụng của bạn hoạt động và sẽ tiếp tục hoạt động, theo cách mong đợi và được biết đến nhiều như thư viện jsSHA có liên quan.

Có một số cách để thực hiện việc này. Bạn có thể tham chiếu URL cụ thể, cố định chỉ định rõ ràng phiên bản

http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js 

Vì thẻ được gắn thẻ (3.0.2), bạn an toàn hơn một chút, nhưng bạn vẫn đang tham chiếu kiểm soát nguồn. Điều này thực sự nên được thực hiện thông qua một CDN nếu có. Tôi không tin rằng URL googlecode.com là URL CDN (tôi có thể sai). Tất nhiên, đây là một thực tế phổ biến để sử dụng một CDN hoặc liên kết ngoài thích hợp để tham chiếu đến thư viện JS và bạn có thể thấy example of this on the JQuery page, nhưng điều này thường được thực hiện như là một phần của cải tiến hiệu suất trang. CDN được tối ưu hóa cho vị trí địa lý của người dùng để tham chiếu đến bất kỳ nội dung nào trên CDN (trái ngược với máy chủ chính) sẽ được phân phối nhanh hơn. Nó có lợi ích kinh nghiệm người dùng. Sẽ hữu ích nếu thời gian tải trang quan trọng đối với userbase của bạn.

Cách thay thế và an toàn nhất là giữ một bản sao thư viện JS trong điều khiển nguồn của chính bạn và tham khảo nó bằng cơ sở hạ tầng của riêng bạn. Đó là với bạn, nó là một phiên bản cố định và không có bất ngờ nếu một cái gì đó thay đổi, chẳng hạn như tái cơ cấu, các trang web đi xuống, và như vậy.