AJAX เห็นได้ชัดว่าช่วยปรับปรุงส่วนติดต่อผู้ใช้ แต่สิ่งนี้จะช่วยลดภาระของเซิร์ฟเวอร์หรือไม่ คุณอาจคิดว่าเป็นเพราะหน้าเว็บทั้งหมดไม่จำเป็นต้องแสดงทุกครั้ง แต่อาจมีตัวแปรอื่น ๆ ที่ฉันไม่ได้พิจารณา
AJAX เห็นได้ชัดว่าช่วยปรับปรุงส่วนติดต่อผู้ใช้ แต่สิ่งนี้จะช่วยลดภาระของเซิร์ฟเวอร์หรือไม่ คุณอาจคิดว่าเป็นเพราะหน้าเว็บทั้งหมดไม่จำเป็นต้องแสดงทุกครั้ง แต่อาจมีตัวแปรอื่น ๆ ที่ฉันไม่ได้พิจารณา
คำตอบ:
ขึ้นอยู่กับสิ่งที่คุณทำและวิธีที่คุณทำ
หากคุณกำลังแทนที่การโหลดแบบเต็มหน้าด้วยการร้องขอ AJAX (เช่นการโทร AJAX เฉพาะเมื่อผู้ใช้คลิกสิ่งที่จะเป็นการโหลดแบบเต็มหน้า) AJAX จะลดการโหลดเซิร์ฟเวอร์เนื่องจากคุณกำลังประมวลผลน้อยลงและส่งคืนน้อยลง ข้อมูล.
ในทางกลับกันถ้าคุณกำลังเพิ่มประเภทการอัปเดตอัตโนมัติ AJAX ที่โพลเซิร์ฟเวอร์ทุกสองสามวินาทีนั่นอาจเพิ่มการโหลดขึ้นอยู่กับผู้ใช้ (มันอาจไม่เพิ่มการโหลดเซิร์ฟเวอร์หากผู้ใช้กดปุ่ม F5 เพื่อรีเฟรชด้วยตนเองอยู่ดี คนส่วนใหญ่มักจะไม่ทำแบบนั้นหลายชั่วโมง)
การเพิ่มประสิทธิภาพ AJAX อื่นคือการโหลดข้อมูลมากขึ้นเมื่อคุณเลื่อน ในกรณีนั้นหากผู้ใช้ไม่เลื่อนลงไปเรื่อย ๆ นั่นเป็นการสูญเสียการประมวลผล
แน่นอนว่าการติดตั้งใช้งานจริงสามารถบิดเบือนผลลัพธ์ได้ทั้งสองวิธีนี่คือผลลัพธ์ทั่วไปที่สมมติว่ามีการใช้งานที่ดีพอสมควร
แน่นอนมันทำหน้าที่ลดภาระของเซิร์ฟเวอร์ ดูการนำเสนอนี้ @ jsconf'09 - วิธีที่ Facebook ใช้ ajax ในการทำเช่นนั้น
Ajax เป็น async การสื่อสารเซิร์ฟเวอร์ - และคุณสามารถใช้สิ่งนั้นได้หลายวิธี ผู้คนใช้เพื่อโหลด JSON แบบง่ายไปยังเว็บแบบเรียลไทม์และทุกสิ่งในระหว่างนั้น
ข้อควรจำ - ความท้าทายที่แท้จริงคือความสมดุลระหว่างไคลเอนต์และเซิร์ฟเวอร์ มุ่งมั่นที่จะทำให้แต่ละฝ่ายทำงานเป็นระบบที่ปรับให้เหมาะสมและคุณจะได้รับประโยชน์ที่ชัดเจนจากการรับรู้การตอบสนองและความเร็วที่แท้จริง
มีปัจจัยอื่น ๆ ที่คุณไม่ได้พิจารณา - ในกรณีส่วนใหญ่ AJAX จะเพิ่มการโหลดเซิร์ฟเวอร์ ในสถานการณ์ทั่วไปไม่ใช่อาแจ็กซ์ผู้ใช้โหลดหน้าใหญ่หนึ่งหน้าทุกสองสามวินาทีหรือไม่กี่นาที ใช่แล้วหน้าเดียวนั้นทำงานได้มากกว่าสำหรับเซิร์ฟเวอร์ แต่มีเวลาอีกมากระหว่างการร้องขอเพื่อกู้คืนและให้บริการคำขออื่น ๆ ในสถานการณ์ AJAXified การโหลดหน้าเดียวตอนนี้กลายเป็นเพลงฮิตเล็ก ๆ จำนวนมากใช้เซิร์ฟเวอร์และรอการตอบรับอย่างต่อเนื่อง
มันเป็นเหมือนความตายจากการตัด 1,000 ครั้ง - ไม่มีคำขอใดที่มีขนาดใหญ่และในตัวเอง แต่น้ำหนักรวมเป็นนักฆ่า โดยเฉพาะอย่างยิ่งเมื่อคุณเริ่มพิจารณาว่าคำขอขนาดเล็กเหล่านี้มีราคาแพงพอที่จะทำหน้าที่เป็นคำขอเต็มหน้า ในทั้งสองกรณีคุณอาจเรียกใช้ผ่านเว็บแอปพลิเคชันทั้งหมดกดปุ่มฐานข้อมูลและรอคำตอบขณะที่นั่งอยู่บนการเชื่อมต่อ HTTP ที่มีค่า
นี่คือตัวอย่างของวิธี ajax สามารถได้รับน่าเกลียดบนเซิร์ฟเวอร์จริงอย่างรวดเร็ว ลอง "ผู้บริหารแดชบอร์ด" ทั่วไปที่มี 4 ช่องสำหรับวิดเจ็ต สมมติว่า CEO ชอบรายงานการขายเต็มรูปแบบทางด้านขวารายชื่อผู้มีรายได้สูงสุด 10 อันดับแรกที่อยู่ตรงกลางและรายงานราคาหุ้นของ บริษัท ทางด้านขวา และสมมติว่าเราจะทำสิ่งนี้ผ่านการร้องขอรีโมต ajax แบบง่าย ตอนนี้หน้าของคุณต้องใช้การปัดเศษ HTTP 4 ครั้ง (หน้าหลักรายงานแดชบอร์ดแต่ละรายการ) กับเซิร์ฟเวอร์โดยไม่คำนึงถึงสไตล์ชีตบัญชีรูปภาพและเนื้อหาอื่น ๆ แต่ละอันต้องใช้เว็บสแต็คเต็มรูปแบบในการดำเนินการ - คุณจะต้องกดฐานข้อมูลและแสดง HTML โดยใช้เฟรมเวิร์กเว็บของคุณใช่ไหม ตอนนี้คูณ CEO เดียวด้วยผู้ใช้ระยะไกล 2000 คนซึ่งบางคนมีการเชื่อมต่อที่ไม่แน่นอน
ในทางกลับกันคุณอาจมีหน้าฝั่งเซิร์ฟเวอร์เดียวที่ดำเนินการและส่งคืนโครงกระดูก HTML รวมถึงข้อมูล (รวมอยู่ใน JSON ในหน้า) เพื่อแสดงผลรายงาน การเชื่อมต่อเดี่ยวใหญ่กว่า แต่เต้นน้อยกว่าในเว็บเซิร์ฟเวอร์โดยรวมเนื่องจากคุณไม่ได้จัดการคำขอ 4 รายการและหมุนไปป์ไลน์ 4 รายการ ฯลฯ
หากคุณใช้ AJAX เพื่อแทนที่งานที่เซิร์ฟเวอร์จะทำอย่างนั้นใช่ว่าจะปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์ อย่างไรก็ตามคุณอาจออกแบบสิ่งต่าง ๆ เพื่อให้เซิร์ฟเวอร์ยังคงทำอะไรได้มากและตอนนี้สิ่งที่เกิดขึ้นกับ AJAX นั้นอยู่เหนือสิ่งที่เซิร์ฟเวอร์ทำอยู่
ส่วนใหญ่เป็นเรื่องเกี่ยวกับ UI เนื่องจากคุณไม่ควรทำสิ่งใดในฝั่งไคลเอ็นต์ โดยพื้นฐานแล้วสิ่งใดก็ตามที่เซิร์ฟเวอร์กำลังทำเพื่อสนับสนุน UI (เช่นโหลดหน้าเว็บซ้ำด้วยเค้าโครงที่แตกต่างกันเพื่อตอบสนองต่อการป้อนข้อมูลของผู้ใช้) ทำได้ด้วย JavaScript แทน
หากการเรนเดอร์ HTML เป็นส่วนสำคัญของโพรไฟล์ประสิทธิภาพของแอปพลิเคชันเซิร์ฟเวอร์ของคุณการย้ายการเรนเดอร์ HTML ไปยังไคลเอนต์อาจทำให้ประสิทธิภาพของแอปพลิเคชันเซิร์ฟเวอร์ดีขึ้น
อย่างไรก็ตามหากการเรนเดอร์ HTML เป็นเพียงส่วนเล็ก ๆ ของโพรไฟล์ประสิทธิภาพของแอปพลิเคชันเซิร์ฟเวอร์ของคุณโดยทั่วไปแล้วคำขอเพิ่มเติมจะหมายถึงการเดินทางผ่านสแต็กมากขึ้น
แน่นอนวิธีเดียวที่จะรู้ได้ในกรณีเฉพาะของคุณคือลองทำดู
คุณต้องพิจารณาวิธีที่ดีที่สุดในการปรับใช้โซลูชันของคุณ แบบฟอร์มที่ไม่ใช่ไดนามิกง่ายไม่จำเป็นต้องใช้อาแจ็กซ์และการเพิ่มมันอาจเป็นอันตรายต่อความสมบูรณ์แบบได้ หากปัญหาของคุณคือข้อความค้นหาที่ไม่ดีการเพิ่มประสิทธิภาพ ajax ทั้งหมดในโลกจะไม่ช่วยให้คุณเพิ่มประสิทธิภาพได้
หากเซิร์ฟเวอร์ของคุณทำงานหนักเกินไปคุณต้องเข้าใจสาเหตุ
หากคุณได้รับความนิยมจำนวนมากแล้วอาแจ็กซ์จะไม่แก้ไขปัญหาที่คุณต้องการความจุมากขึ้น การเพิ่ม ajax จะเพิ่มจำนวนคำขอที่เซิร์ฟเวอร์ของคุณต้องจัดการ
หากคุณมีหน้าเว็บที่ซับซ้อนคุณควรดูว่ามีสิ่งใดที่คุณสามารถทำฝั่งไคลเอ็นต์เพื่อลดภาระบนเซิร์ฟเวอร์ของคุณ หากหน้าเว็บของคุณเป็นแบบไดนามิก แต่มีการแคชแพ็กเกจข้อมูลที่ จำกัด อย่างแท้จริงสำหรับการปรับด้านลูกค้าอาจให้ผลที่ดีกว่า
และบางครั้งอาแจ็กซ์จะช่วย เมื่อคุณมีรูปแบบที่ซับซ้อนด้วยข้อมูลแบบไดนามิก Ajax ชนะวัน แต่ถ้าคุณสอบถามมีความซับซ้อนและใช้เวลานานในการรันอาแจ็กซ์ก็จะไม่แก้ปัญหาของคุณ