การเพิ่มประสิทธิภาพ IIS 7.5 สำหรับไซต์ที่ให้บริการเฉพาะเนื้อหาแบบคงที่


21

ฉันกำลังมองหาการตั้งค่าโดเมนที่ไม่มีคุกกี้ซึ่งมีวัตถุประสงค์เพื่อให้บริการเนื้อหาแบบคงที่สำหรับเว็บแอปพลิเคชันซึ่งคล้ายกับเว็บไซต์http://sstatic.net/ ที่ไซต์แลกเปลี่ยนสแต็กใช้

คำถามของฉันคือฉันสามารถปรับแต่งอะไรให้เหมาะสมกับการตั้งค่า IIS 7.5 สำหรับโดเมนดังกล่าว ตัวอย่างเช่นมันจะไม่รับผิดชอบอะไรเลยนอกจากการให้บริการเนื้อหาแบบคงที่ดังนั้นการปิดการใช้งานการรวม ASP.NET จะเป็นการย้ายที่ดีสำหรับเว็บไซต์นี้หรือไม่?

ข้อเสนอแนะหรือการอ้างอิงใด ๆ ในการตั้งค่าเว็บไซต์ที่มี IIS 7.5 จะยินดีมากที่สุด

แก้ไข

เพียงเพื่อชี้แจงว่านี่ไม่ใช่ไซต์เดียวบนเซิร์ฟเวอร์ดังนั้นการปรับให้เหมาะสมที่แนะนำควรกำหนดเป้าหมายระดับไซต์ไม่ใช่กำหนดค่าระดับเซิร์ฟเวอร์

คำตอบ:


18

มีข้อควรพิจารณาหลายประการในเรื่องนี้บางข้อได้รับการจัดการบน IIS (การบีบอัด HTTP, ส่วนหัวแคช fx) และบางอย่างได้รับการจัดการระหว่างกระบวนการสร้าง / ก่อนการปรับใช้ (เช่นการเชื่อมต่อไฟล์ Javascript และ CSS และ whitespace minification)

ดังนั้นจึงเป็นเรื่องยากที่จะให้บทสรุปที่สมบูรณ์ในหนึ่งคำตอบเนื่องจากบางส่วนจะขึ้นอยู่กับวิธีการสร้างและปล่อยของคุณ ในขั้นตอนระดับสูง:

  • ไซต์ดังกล่าวเป็น "การทำอาหาร" โดยคุณเป็นผู้ใช้โดเมนใหม่ซึ่งไม่ได้เชื่อมโยงกับเว็บแอปพลิเคชันของคุณ เนื่องจากคุณไม่ได้ตั้งค่าคุกกี้ใด ๆ สำหรับโดเมน (โดยใช้รหัสแอปพลิเคชัน fx .NET) ดังนั้นจึงเป็น "cookieless"

  • คุณควรเปิดใช้งานการบีบอัด HTTP อย่างแน่นอน สำหรับเนื้อหาข้อความคงที่เช่น Javascript และ CSS

  • ฉันไม่ใช่ผู้ดูแลระบบ IIS ที่ยิ่งใหญ่ที่สุด แต่เท่าที่ฉันสามารถบอกได้คุณต้องใช้องค์ประกอบเริ่มต้นของ IIS ที่เกี่ยวข้องกับบทบาทเซิร์ฟเวอร์พื้นฐาน "Web Server (IIS)"เท่านั้น

  • คุณควรอย่างยิ่งที่ช่วยให้หัวแคชนานสำหรับเนื้อหาแบบคงที่ คำแนะนำทั่วไปคือ 31 วัน แต่คุณสามารถตั้งค่าได้สูงหรือต่ำกว่า โปรดจำไว้ว่าหากคุณให้บริการเนื้อหาแบบคงที่ด้วยส่วนหัวแคชยาวคุณจะต้องเปลี่ยน URL หากคุณเปลี่ยนไฟล์เพื่อหลีกเลี่ยงเนื้อหาแคชเก่าที่ลูกค้าใช้ซ้ำ

  • คุณควรเปิดใช้งาน HTTP keep-alive (เอกสารเช่นเดียวกับส่วนหัวแคช)

นอกจากนี้ยังมีงานก่อนการปรับใช้เช่นwhitespace ที่บีบอัด Javascript และ CSSและการบีบอัด PNG ที่ดีกว่าเป็นต้นนี่คือเครื่องมือพัฒนาของคุณและวงจรการสร้างช่วยตัดสินใจว่าจะดำเนินการอย่างไร

เมื่อเสร็จแล้วให้ลองดาวน์โหลดไม่กี่ไฟล์จากเซิร์ฟเวอร์คงที่ที่มีการเปิดใช้งาน YSlow ฉันพบว่าชุดกฎ"Classic V2"ให้ผลกระทบมากที่สุดสำหรับความพยายามดังนั้นฉันขอแนะนำให้ตรวจสอบคะแนนของคุณกับชุดกฎ YSlow นี้

ของชุดกฎ "Classic V2" กฎเหล่านี้จะใช้กับอินสแตนซ์และเนื้อหา IIS ของเซิร์ฟเวอร์แบบคงที่:

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

ขอบคุณสำหรับความคิดเห็นของคุณ: ฉันได้ดูแลข้อควรพิจารณาก่อนการผลิตที่คุณได้ระบุไว้แล้ว สิ่งที่ฉันจริง ๆ หลังจากนั้นคือ nitty gritty ของการกำหนดค่า IIS เนื่องจากไม่มีอะไรนอกจากเนื้อหาแบบคงที่ฉันคิดว่าฉันสามารถลบสิ่งต่าง ๆ มากมายจาก http ไปป์ไลน์และอื่น ๆ อีกมากมาย
DanP

1
@DanP: จริงๆแล้วมันไม่ได้มีอะไรมากมายในการตั้งค่า IIS Microsoft กำลังเริ่มการจัดส่งขั้นต่ำ "ปลอดภัยโดยค่าเริ่มต้น" การเพิ่มประสิทธิภาพการทำงานโดยการลบส่วนประกอบ IIS ที่เป็นส่วนหนึ่งของบทบาทเซิร์ฟเวอร์พื้นฐานคือการปรับให้เหมาะสมก่อนเวลา IMHO ฉันเกือบจะรับประกันได้ว่าประสิทธิภาพที่เพิ่มขึ้นจะไม่คุ้มค่าเพราะการให้บริการไฟล์แบบสแตติกมักจะมีภาระเซิร์ฟเวอร์น้อยมาก เพื่อประสิทธิภาพของผู้ใช้งานส่วนที่สำคัญคือการได้รับซีแมนทิกส์ HTTP ที่ถูกต้อง - ส่วนหัวแคชการบีบอัดการรักษาตามเอกสารด้านบน
Jesper M

ค่าเริ่มต้นถูกออกแบบมาสำหรับการให้บริการไฟล์แบบสแตติก - หากคุณเพิ่งเพิ่มบทบาทเว็บเซิร์ฟเวอร์คุณจะได้รับการตั้งค่าด้วยขั้นตอนน้อยที่สุดสำหรับการให้บริการไฟล์แบบคงที่ ดังนั้นเพื่อลดขั้นตอน - อย่าติดตั้งอย่างอื่น!
TristanK

@TristanK: ฉันเดาว่าฉันควรจะเจาะจงมากกว่านี้ ... นี่ไม่ใช่ไซต์เดียวบนเซิร์ฟเวอร์ IIS ดังนั้นฉันต้องทำการปรับให้เหมาะสมที่ระดับไซต์ไม่ใช่ระดับเซิร์ฟเวอร์
DanP

ใช่นั่นคือข้อมูลที่สำคัญ หากคุณตัดสินใจว่านี่เป็นเส้นทางที่คุณเลือกฉันคิดว่า a) ติดตั้งใหม่เพื่อเปรียบเทียบกับ b) ทำเครื่องหมายโมดูล / ตัวจัดการใด ๆ ที่คุณต้องการตัดออก (ซึ่งไม่ใช่ส่วนหนึ่งของการติดตั้งเริ่มต้น) ด้วยเงื่อนไขเบื้องต้น = " AppPoolName! = StaticPool "(อาจมีไวยากรณ์อยู่ข้างหลังนั่น) การรวม / แยกโมดูลในแอพที่ให้มานั้นค่อนข้างสวย
TristanK

9

มีบทความที่น่าสนใจที่นี่ที่มีคนใช้ IIS เพื่อให้บริการไฟล์คงที่ ส่วนใหญ่จะเน้นไปที่การปรับแต่งการตั้งค่าการแคชไฟล์ IIS เพื่อ จำกัด กิจกรรมของดิสก์ (ซึ่งเป็นคอขวดของเขา) เขาบอกว่าเขาเห็นประสิทธิภาพเพิ่มขึ้น 20x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.