บริบท
ทำงานเป็นนักพัฒนาอิสระฉันมักจะทำเว็บไซต์อย่างสมบูรณ์ตาม XSLT กล่าวอีกนัยหนึ่งในทุกคำร้องขอไฟล์ XML จะถูกสร้างขึ้นซึ่งมีทุกสิ่งที่เราจำเป็นต้องรู้เกี่ยวกับเนื้อหาของหน้า: ชื่อของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันรายการเมนูด้านบนหากเมนูนี้เป็นแบบไดนามิก / กำหนดค่าข้อความ แสดงในพื้นที่เฉพาะของหน้า ฯลฯ จากนั้นกระบวนการ XSL (แคช ฯลฯ ) ไปยังหน้า HTML / XHTML เพื่อส่งไปยังเบราว์เซอร์
มันมีจุดที่ดีที่จะทำให้การสร้างเว็บไซต์ขนาดเล็กง่ายขึ้นโดยเฉพาะกับ PHP เป็นแม่แบบเอ็นจิ้น แต่ฉันชอบเทมเพลตเอนจิ้นอื่น ๆ เพราะมันมีประสิทธิภาพมากกว่าเทมเพลตเอนจิ้นส่วนใหญ่และเพราะฉันรู้จักดีกว่าและชอบมัน นอกจากนี้ยังเป็นไปได้เมื่อต้องการเพื่อให้การเข้าถึงข้อมูล XML แบบออนดีมานด์สำหรับการเข้าถึงแบบอัตโนมัติโดยไม่จำเป็นต้องสร้าง API แยกต่างหาก
แน่นอนว่ามันจะล้มเหลวอย่างสมบูรณ์ในเว็บไซต์ขนาดกลางหรือขนาดใหญ่เนื่องจากแม้จะมีเทคนิคการแคชที่ดี XSL ยังคงลดประสิทธิภาพของเว็บไซต์โดยรวมและต้องใช้เซิร์ฟเวอร์ซีพียูมากขึ้น
คำถาม
เบราว์เซอร์ที่ทันสมัยมีความสามารถในการใช้ไฟล์ XML และแปลงมันด้วยไฟล์ XSL ที่เกี่ยวข้องประกาศในรูปแบบ XML <?xml-stylesheet href="demo.xslt" type="text/xsl"?>
เช่น Firefox 3 สามารถทำได้ Internet Explorer 8 ก็ทำได้เช่นกัน
หมายความว่าเป็นไปได้ที่จะโยกย้ายการประมวลผล XSL จากเซิร์ฟเวอร์ไปยังฝั่งไคลเอ็นต์สำหรับผู้ใช้ 50% (ตามสถิติของเบราว์เซอร์บนเว็บไซต์หลายแห่งที่ฉันอาจต้องการใช้งาน) หมายความว่า 50% ของผู้ใช้จะได้รับเฉพาะไฟล์ XML ในแต่ละคำขอซึ่งจะช่วยลดแบนด์วิดท์และเซิร์ฟเวอร์ของพวกเขา (ไฟล์ XML จะสั้นกว่าอะนาล็อก HTML ที่ประมวลผลมาก) และลดการใช้ CPU ของเซิร์ฟเวอร์
ข้อเสียของเทคนิคนี้คืออะไร?
ฉันคิดเกี่ยวกับหลาย ๆ คน แต่มันไม่ได้ใช้ในสถานการณ์นี้:
- การใช้งานที่ยากและจำเป็นต้องเลือกขึ้นอยู่กับคำขอของเบราว์เซอร์เมื่อใดที่จะส่ง XML ดิบและเมื่อใดที่จะเปลี่ยนเป็น HTML แทน เห็นได้ชัดว่าระบบจะไม่ยากขึ้นมากแล้วระบบจริง การเปลี่ยนแปลงเพียงอย่างเดียวคือการเพิ่มลิงก์ไฟล์ XSL ให้กับทุก XML และเพื่อเพิ่มการตรวจสอบเบราว์เซอร์
- การใช้งาน IO และแบนด์วิดธ์เพิ่มขึ้นเนื่องจากไฟล์ XSLT จะถูกดาวน์โหลดโดยเบราว์เซอร์แทนที่จะถูกแคชโดยเซิร์ฟเวอร์ ฉันไม่คิดว่ามันจะเป็นปัญหาเนื่องจากไฟล์ XSLT จะถูกแคชโดยเบราว์เซอร์ (เช่นรูปภาพหรือ CSS หรือไฟล์ JavaScript ถูกแคชจริง)
- อาจมีปัญหาเกี่ยวกับฝั่งไคลเอ็นต์เช่นอาจเป็นปัญหาเมื่อบันทึกหน้าเว็บในเบราว์เซอร์บางตัว
- ความยากในการดีบักรหัส: เป็นไปไม่ได้ที่จะได้รับแหล่ง HTML ที่เบราว์เซอร์ใช้งานจริงเนื่องจากแหล่งที่แสดงเพียงอย่างเดียวคือ XML ที่ดาวน์โหลดมา ในทางกลับกันฉันไม่ค่อยไปดูโค้ด HTML ทางฝั่งไคลเอ็นต์และในกรณีส่วนใหญ่มันไม่สามารถใช้งานได้โดยตรง (ลบช่องว่าง)
ngx_http_xslt_module
หรือทั้งสี่อย่าง) ฉันสงสัยอย่างมากว่าฝ่ายบริการลูกค้าของ XSLT 2.0 นั้นดีกว่า