IIS 7.5 optimisasi untuk situs yang hanya menyajikan konten statis

21

Saya ingin menyiapkan domain bebas cookie yang dimaksudkan untuk menyajikan konten statis untuk aplikasi web, mirip dengan situs http://sstatic.net/ yang digunakan situs pertukaran stack.

Pertanyaan saya adalah, optimasi apa yang dapat saya lakukan untuk setup IIS 7.5 saya untuk domain seperti itu? Misalnya, tidak akan bertanggung jawab atas apa pun selain menayangkan konten statis, jadi apakah menonaktifkan integrasi ASP.NET akan menjadi langkah yang baik untuk situs ini?

Setiap saran atau referensi tentang pengaturan situs semacam itu dengan IIS 7.5 akan sangat disambut.

Edit

Hanya untuk memperjelas, ini bukan situs HANYA di server, jadi pengoptimalan yang disarankan harus menargetkan tingkat situs, dan bukan konfigurasi tingkat server.

DanP
sumber

Jawaban:

18

Ada beberapa pertimbangan dalam hal ini, beberapa yang ditangani pada IIS (kompresi HTTP, caching header fx), dan beberapa yang ditangani selama proses pembangunan / sebelum penyebaran (seperti penggabungan file Javascript dan CSS & minifikasi spasi).

Karena itu, agak sulit untuk memberi Anda rundown lengkap dalam satu jawaban, karena beberapa di antaranya akan tergantung pada metode build & release Anda. Dalam langkah-langkah tingkat tinggi:

  • Situs ini "tidak bisa memasak" karena Anda menggunakan domain baru, yang tidak terikat dengan aplikasi web Anda. Karena Anda tidak menyetel cookie apa pun untuk domain (menggunakan kode aplikasi fx .NET), maka "cookieless".

  • Anda harus benar - benar mengaktifkan kompresi HTTP untuk konten teks statis seperti Javascript dan CSS.

  • Saya bukan administrator IIS terbaik, tetapi sejauh yang saya tahu, Anda hanya perlu komponen IIS default yang terkait dengan peran server dasar "Web Server (IIS)" .

  • Anda harus benar - benar mengaktifkan header caching panjang untuk konten statis . Rekomendasi umum adalah 31 hari, tetapi Anda dapat mengaturnya lebih tinggi atau lebih rendah. Ingat, jika Anda menyajikan konten statis dengan header cache yang panjang, maka Anda harus mengubah URL jika Anda mengubah file, untuk menghindari konten lama yang di-cache digunakan kembali oleh klien.

  • Anda harus mengaktifkan HTTP keep-live (dokumen yang sama dengan header caching).

Selain itu, ada tugas pra-penempatan, seperti spasi putih mengkompresi Javascript dan CSS , dan idealnya kompres PNG lebih baik , dll. Ini adalah alat pengembangan Anda dan siklus pembangunan membantu memutuskan bagaimana untuk melanjutkan.

Setelah selesai, coba unduh beberapa file dari server statis Anda dengan YSlow diaktifkan . Saya menemukan bahwa aturan "Klasik V2" memberikan dampak terbesar untuk upaya ini, jadi saya sarankan memeriksa skor Anda terhadap peraturan YSlow ini.

Dari aturan "Classic V2", aturan ini berlaku bersih untuk instance & konten IIS server statis Anda:

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
Jesper M
sumber
Terima kasih atas komentar Anda: Saya sudah memperhatikan pertimbangan pra-produksi yang telah Anda catat. Yang benar-benar saya cari adalah seluk beluk konfigurasi IIS. Karena tidak ada apa-apa selain konten statis, saya berasumsi saya dapat menghapus banyak hal dari pipa http, dll.
DanP
1
@DanP: Sebenarnya tidak banyak yang bisa dilakukan untuk mengatur IIS. Microsoft semakin mahir dalam pengiriman konfigurasi minimal "secure by default". Pengoptimalan kinerja dengan menghapus komponen IIS yang merupakan bagian dari Peran Server dasar adalah pengoptimalan dini IMHO. Saya hampir dapat menjamin bahwa peningkatan kinerja tidak akan sepadan, karena melayani file statis biasanya memiliki beban server yang sangat rendah. Untuk kinerja pengguna akhir, bagian penting adalah mendapatkan semantik HTTP yang benar - header caching, kompresi, keepalive, sesuai dengan dokumen di atas.
Jesper M
Defaultnya dirancang untuk penyajian file statis - jika Anda hanya menambahkan peran Server Web, Anda disiapkan dengan pipa minimal untuk melayani file statis. Jadi, untuk meminimalkan pipa - jangan memasang yang lain!
TristanK
@ ChristianK: Saya kira saya harus lebih spesifik ... ini bukan HANYA situs di server IIS, jadi saya perlu melakukan optimasi di tingkat situs, bukan di tingkat server.
DanP
Ya, itu informasi penting. Jika Anda telah memutuskan bahwa ini adalah jalur yang Anda pilih, saya rasa a) menginstal yang baru untuk dibandingkan dengan, b) tandai modul / penangan yang ingin Anda hapus (yang bukan bagian dari pemasangan default) dengan prasyarat = " AppPoolName! = StaticPool "(mungkin memiliki sintaks di belakang sana). Cukup banyak, untuk menyertakan / mengecualikan modul dalam kumpulan aplikasi yang diberikan.
TristanK
9

Ada tulisan yang sangat menarik di sini di mana seseorang menggunakan IIS untuk menyajikan file statis. Ini terutama berkonsentrasi pada tweaking pengaturan caching file IIS untuk membatasi aktivitas disk (yang merupakan hambatannya). Dia mengatakan dia melihat peningkatan kinerja 20x.

UpTheCreek
sumber