Lợi thế để lưu trữ tài nguyên tĩnh trên một tên miền riêng là gì?


24

Tôi nhận thấy rất nhiều trang web lưu trữ tài nguyên của họ trên một tên miền riêng biệt từ trang web chính, ví dụ StackExchange sử dụng sstatic.net, Barnes & Noble bằng hình ảnhbn.com, v.v.

Tôi hiểu rằng có những lợi ích khi đưa tài nguyên tĩnh của bạn lên một máy chủ riêng biệt, có thể với một máy chủ web tệp tĩnh hiệu quả như nginx, giải phóng máy chủ chính để tập trung vào phục vụ nội dung động. Tương tự, việc thuê ngoài một CDN được chia sẻ như Akamai trên nền tảng đám mây là hợp lý.

Tuy nhiên, lợi ích của việc sử dụng một tên miền riêng là gì? Tại sao sstatic.net thay vì static.stackexchange.com?

Cập nhật : Một số câu trả lời bỏ lỡ câu hỏi cốt lõi. Tôi hiểu rằng có lợi ích khi phân chia giữa nhiều máy chủ - tải xuống song song, máy chủ web mỏng hơn, v.v. Nhưng điều khó nắm bắt hơn là tại sao nhiều tên miền . Tại sao sstatic.net chứ không phải static.stackexchange.com làm máy chủ lưu trữ tài nguyên được chia sẻ? Cho đến nay, chỉ có một câu trả lời đã giải quyết điều đó.

Câu trả lời:


22

Nhiều trang web có khá nhiều cookie được đặt, những cookie này có mục đích hỗ trợ một số loại trạng thái.

Bằng cách đặt tài nguyên tĩnh (không trạng thái) trên một miền hoàn toàn khác, bạn có thể giảm kích thước của các yêu cầu http. Trong một số trường hợp, có rất nhiều cookie đến nỗi một yêu cầu http cần có hai gói TCP được truyền đi. Vì vậy, có một tên miền riêng là một trong những cách để giảm số lượng gói để yêu cầu các phần khác nhau của trang.

Các phương pháp khác có cùng mục tiêu là hợp nhất rất nhiều hình ảnh thành một sprite duy nhất và hợp nhất tất cả Javascript vào một tệp.


23

Ngoài việc sử dụng CDN, sử dụng các tên miền riêng cho dữ liệu tĩnh cũng có nghĩa là:

  1. Bạn có thể sử dụng một máy chủ web nhẹ mà không phải tải tất cả các mô-đun / tiện ích mở rộng mà máy chủ web nội dung động của bạn phải tải theo từng yêu cầu. Không phải quét từng thư mục trong đường dẫn URI để đọc tệp .htaccess cũng làm tăng số lượng yêu cầu đồng thời mà máy chủ có thể xử lý.

  2. Thêm một tên miền phụ có nghĩa là bạn tăng số lượt tải xuống song song mà trình duyệt có thể thực hiện.

  3. Nếu được thiết lập đúng cách (ví dụ: trang web của bạn được lưu trữ www.example.comthay vì example.com), bạn cũng có thể tận dụng tên miền phụ không cần nấu, giảm lưu lượng truy cập và thời gian làm tròn.

Nhược điểm duy nhất là, nếu bạn đang sử dụng các phiên SSL, bạn cần chứng chỉ đã ký và IP tĩnh riêng cho (các) tên miền bổ sung. Nhưng lợi ích lớn hơn sự bất tiện nhỏ này trong hầu hết các trường hợp.

Chỉnh sửa:

Xin lỗi, tôi đọc sai câu hỏi của bạn. Nếu bạn hỏi tại sao một số người sử dụng SLD riêng biệt, điều đó sẽ được trả lời bằng dấu ngoặc đơn trên # 3. Nó cũng được giải thích trên sstatic.net :

Nếu tên miền của bạn là www.example.org, bạn có thể lưu trữ các thành phần tĩnh của mình trên static.example.org. Tuy nhiên, nếu bạn đã đặt cookie trên domain.org cấp cao nhất trái ngược với www.example.org, thì tất cả các yêu cầu tới static.example.org sẽ bao gồm các cookie đó. Trong trường hợp này, bạn có thể mua một tên miền hoàn toàn mới, lưu trữ các thành phần tĩnh của bạn ở đó và giữ cho tên miền này không có cookie. Yahoo! sử dụng yimg.com, YouTube sử dụng ytimg.com, Amazon sử dụng hình ảnh-amazon.com, v.v.

Nhưng hóa thân cũng đề cập đến một điểm tốt về việc sử dụng SLD chung riêng thay vì tên miền phụ của SLD hiện tại khi bạn đang điều hành một mạng lưới lớn các trang web chia sẻ một số tài sản nhất định.

Cuối cùng, như Niels Basjes chỉ ra, một phần lý do để loại bỏ cookie là để giảm thiểu số lượng gói được sử dụng để thực hiện yêu cầu. Tôi nghĩ rằng các hướng dẫn của YSlow nói rằng hầu hết các mạng có kích thước gói tối đa là 1500 byte, do đó, việc giữ nó dưới 1500 byte sẽ giảm chi phí TCP. Điều này cũng cho thấy một lợi thế khác của việc sử dụng sstatic.netthay vì static.webmasters.stackexchange.com.


Tại sao bạn cần một ip riêng?
Mihalis Bagos

2
Bởi vì mã hóa được áp dụng theo truyền thống trước khi tên miền được gửi. SNI , làm giảm bớt điều này, vẫn chưa được hỗ trợ toàn cầu - bạn sẽ loại trừ IE trên XP.
phihag

@Mihalis: Chỉ cần thêm vào bình luận của phihag, bạn cũng sẽ loại trừ Windows Mobile 6.5 trở lên, Android 2.x trở lên, Trình duyệt Blackberry, Safari trên XP ... Có thể tìm thấy danh sách đầy đủ các phần mềm được hỗ trợ / không hỗ trợ tại đây : en.wikipedia.org/wiki/Server_Name_Inication#No_support
Lèse majesté

3
Tôi không hỏi về lý do tại sao sử dụng nhiều tên miền phụ - điều đó có ý nghĩa với tôi. Tôi đang hỏi về tên miền đầy đủ riêng biệt. Tại sao sstatic.net chứ không phải static.stackexchange.com?
Michael Ekstrand

5

Lèse majesté đã đề cập đến những điểm chính, nhưng để mở rộng hơn nữa, tôi nói thêm rằng việc có một tên miền duy nhất cho tất cả các trang web Stack Exchange khác nhau có nghĩa là ai đó duyệt chúng sẽ chỉ tải xuống nội dung tĩnh như JavaScripts một lần. Ví dụ, truy cập Superuser, người dùng sẽ sử dụng nội dung được lưu trong bộ nhớ cache vì nó đến từ cùng một nơi.

Có một số thông tin hữu ích hơn trên YahooGoogle về điều này.


5

Lý do chính là cookie. Những gì Niels đề xuất trong câu trả lời của anh ta chỉ là một hậu quả nhỏ, và không phải là lý do thực sự. Không có cookie, kích thước yêu cầu nhỏ hơn, vì vậy nó sẽ tiết kiệm một số băng thông.

Tuy nhiên, sự khác biệt thực sự đến từ bộ nhớ cache của trình duyệt. Vì nội dung là tĩnh (tức là không thay đổi), các trình duyệt có thể lưu trữ nội dung đó trên đĩa cứng cục bộ và tránh tải tệp từ Internet mỗi lần. Thay vì toàn bộ tệp, máy chủ web chỉ gửi trả lời 304, có nghĩa là nội dung không thay đổi.

Khi trang web sử dụng cookie, các trình duyệt cho rằng nội dung của tệp có thể khác nhau đối với những người dùng khác nhau, vì vậy họ không lưu trữ các tệp đó. Việc phục vụ tệp từ miền không có cookie đảm bảo rằng bộ đệm của trình duyệt hoạt động đúng.

Đây là lý do chính vì nó cải thiện thời gian tải và giảm băng thông đáng kể.


3

Các trình duyệt cũ hơn bị hạn chế chỉ hai lần tải xuống song song cho mỗi tên máy chủ.

Việc tách các thành phần của một trang web trên nhiều tên miền được gọi là ngăn chặn tên miền . Làm điều này cho phép nhiều tài nguyên được tải xuống song song, giảm thời gian tải trang tổng thể.

Số lượng tên miền tối ưu để phân chia là 2-4. Sau 4 miền, thời gian đáp ứng xuống cấp .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.