Tối ưu hóa IIS 7.5 cho một trang web chỉ phục vụ nội dung tĩnh


21

Tôi đang tìm cách thiết lập một miền không có cookie nhằm phục vụ nội dung tĩnh cho ứng dụng web, tương tự như trang web http://sstatic.net/ mà các trang web trao đổi ngăn xếp sử dụng.

Câu hỏi của tôi là, tôi có thể tối ưu hóa những gì để thiết lập IIS 7.5 cho một tên miền như vậy? Ví dụ, nó sẽ không bao giờ chịu trách nhiệm cho bất cứ điều gì ngoài việc phục vụ nội dung tĩnh, vì vậy việc vô hiệu hóa tích hợp ASP.NET có phải là một động thái tốt cho trang web này không?

Mọi đề xuất hoặc tài liệu tham khảo về việc thiết lập một trang web như vậy với IIS 7.5 sẽ được hoan nghênh nhất.

Chỉnh sửa

Chỉ cần làm rõ, đây không phải là trang web DUY NHẤT trên máy chủ, vì vậy tối ưu hóa được đề xuất nên nhắm mục tiêu cấp độ trang web, chứ không phải cấu hình cấp độ máy chủ.

Câu trả lời:


18

Có một số cân nhắc trong vấn đề này, một số được xử lý trên IIS (nén HTTP, tiêu đề bộ đệm fx) và một số được xử lý trong quá trình xây dựng / trước khi triển khai (chẳng hạn như ghép nối tệp Javascript và CSS & thu nhỏ khoảng trắng).

Như vậy, thật khó để cung cấp cho bạn một danh sách hoàn chỉnh trong một câu trả lời, vì một số câu hỏi sẽ phụ thuộc vào phương thức xây dựng và phát hành của bạn. Trong các bước cấp cao:

  • Trang web "vô dụng" nhờ bạn sử dụng một tên miền mới, một tên miền không bị ràng buộc với ứng dụng web của bạn. Vì bạn không đặt bất kỳ cookie nào cho tên miền (sử dụng mã ứng dụng fx .NET), nên nó sẽ "vô dụng".

  • Bạn hoàn toàn nên kích hoạt nén HTTP cho nội dung văn bản tĩnh như Javascript và CSS.

  • Tôi không phải là quản trị viên IIS giỏi nhất, nhưng theo như tôi có thể nói, bạn chỉ cần các thành phần IIS mặc định được liên kết với vai trò máy chủ "Máy chủ Web (IIS)" cơ bản .

  • Bạn hoàn toàn nên kích hoạt các tiêu đề bộ đệm dài cho nội dung tĩnh . Khuyến nghị chung là 31 ngày, nhưng bạn có thể đặt mức cao hơn hoặc thấp hơn. Hãy nhớ rằng, nếu bạn phục vụ nội dung tĩnh với các tiêu đề bộ đệm dài, thì bạn phải thay đổi URL nếu bạn thay đổi tệp, để tránh các nội dung được lưu trong bộ nhớ cache cũ được sử dụng lại bởi các máy khách.

  • Bạn nên kích hoạt HTTP keep-live (cùng tài liệu với tiêu đề bộ đệm).

Ngoài ra, còn có các tác vụ triển khai trước, chẳng hạn như nén khoảng trắng và Javascript , và lý tưởng là nén tốt hơn PNG , v.v ... Đây là công cụ phát triển của bạn và chu trình xây dựng giúp quyết định cách tiến hành.

Khi bạn đã hoàn tất, hãy thử tải xuống một vài tệp từ máy chủ tĩnh của bạn có bật YSlow . Tôi thấy rằng bộ quy tắc "Classic V2" mang lại tác động lớn nhất cho nỗ lực này, vì vậy tôi sẽ đề nghị kiểm tra điểm số của bạn so với bộ quy tắc YSlow này.

Trong bộ quy tắc "Classic V2", các quy tắc này áp dụng hoàn toàn cho các trường hợp & nội dung IIS của máy chủ tĩnh của bạn:

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable

Cảm ơn ý kiến ​​của bạn: Tôi đã quan tâm đến những cân nhắc trước khi sản xuất mà bạn đã lưu ý. Những gì tôi thực sự sau đó là sự hài hước của cấu hình IIS. Vì không có gì ngoài nội dung tĩnh, tôi cho rằng tôi có thể xóa rất nhiều thứ khỏi đường dẫn http, v.v.
DanP

1
@DanP: Thực sự không có nhiều công việc trong việc thiết lập IIS. Microsoft đang trở nên tốt hơn trong việc vận chuyển các cấu hình tối thiểu "an toàn theo mặc định". Tối ưu hóa hiệu suất bằng cách loại bỏ các thành phần IIS là một phần của Vai trò Máy chủ cơ bản là tối ưu hóa sớm IMHO. Tôi gần như có thể đảm bảo rằng hiệu suất đạt được sẽ không xứng đáng, vì việc phục vụ tệp tĩnh thường có tải máy chủ thấp đáng kể. Đối với hiệu suất của người dùng cuối, phần quan trọng là sử dụng đúng ngữ nghĩa HTTP - tiêu đề bộ đệm, nén, lưu giữ, theo các tài liệu ở trên.
Jesper M

Mặc định được thiết kế để phục vụ tệp tĩnh - nếu bạn chỉ thêm vai trò Máy chủ Web, bạn sẽ được thiết lập với một đường ống tối thiểu để phục vụ các tệp tĩnh. Vì vậy, để giảm thiểu đường ống - không cài đặt bất cứ thứ gì khác!
TristanK

@TristanK: Tôi đoán tôi nên cụ thể hơn ... đây không phải là trang DUY NHẤT trên máy chủ IIS, vì vậy tôi cần thực hiện tối ưu hóa ở cấp trang chứ không phải cấp máy chủ.
DanP

Vâng, đó là thông tin quan trọng. Nếu bạn đã quyết định rằng đây là đường dẫn bạn đã chọn, tôi nghĩ a) cài đặt một đường dẫn mới để so sánh với, b) đánh dấu bất kỳ mô-đun / trình xử lý nào bạn muốn loại bỏ (không phải là một phần của cài đặt mặc định) với điều kiện tiên quyết = " AppPoolName! = StaticPool "(có thể có cú pháp ngược ở đó). Đó là khá nhiều, để bao gồm / loại trừ các mô-đun trong một nhóm ứng dụng nhất định.
TristanK

9

một bài viết rất thú vị ở đây , nơi ai đó đang sử dụng IIS để phục vụ các tệp tĩnh. Nó chủ yếu tập trung vào việc điều chỉnh các cài đặt bộ đệm ẩn tệp IIS để hạn chế hoạt động của đĩa (vốn là nút cổ chai của anh ta). Anh ấy nói rằng anh ấy đã thấy hiệu suất tăng gấp 20 lần.

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.