เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุดในการปรับปรุงประสิทธิภาพของแอปพื้นที่ทำงาน
ในบทความก่อนหน้านี้ คุณได้เรียนรู้เกี่ยวกับ ขั้นตอนการดำเนินการและขั้นตอนการเรียกใช้ข้อมูล แหล่งที่มาทั่วไปของประสิทธิภาพการทำงานช้า และ ปัญหาประสิทธิภาพและความละเอียดทั่วไป ในแอปพื้นที่ทำงาน คุณยังสามารถรับประโยชน์จากการทำตามเคล็ดลับและแนวทางปฏิบัติที่ดีที่สุดในบทความนี้เพื่อเพิ่มประสิทธิภาพของแอปที่คุณสร้าง
จำกัดการเชื่อมต่อข้อมูล
อย่าเพิ่มการเชื่อมต่อมากกว่า 30 รายการในแอปเดียว แอปแจ้งพร้อมท์ผู้ใช้ใหม่ให้เข้าสู่ระบบตัวเชื่อมต่อแต่ละตัว ดังนั้นตัวเชื่อมต่อเพิ่มเติมทุกตัวจะเพิ่มระยะเวลาที่แอปต้องการเพิ่มเริ่มต้น เมื่อเรียกใช้แอป ตัวเชื่อมต่อแต่ละตัวต้องการทรัพยากร CPU หน่วยความจำ และแบนด์วิธเครือข่ายเมื่อแอปร้องขอข้อมูลจากแหล่งข้อมูลนั้น
คุณสามารถวัดประสิทธิภาพของแอปโดยการเปิดเครื่องมือนักพัฒนาซอฟต์แวร์ใน Microsoft Edge หรือ Google Chrome ในขณะที่เรียกใช้แอป แอปของคุณมักจะใช้เวลานานกว่า 15 วินาที ในการส่งคืนข้อมูล หากมีการขอข้อมูลจากการเชื่อมต่อมากกว่า 30 ครั้ง การเชื่อมต่อที่เพิ่มเข้ามาแต่ละครั้งจะถูกนับแยกกันในขีดจำกัดนี้ โดยไม่คำนึงถึงชนิดแหล่งข้อมูลที่เชื่อมต่อ—เช่น Microsoft Dataverse หรือตาราง SQL Server หรือรายการที่สร้างโดยใช้ Microsoft Lists
จำกัดจำนวนของตัวควบคุม
อย่าเพิ่มการควบคุมมากกว่า 500 รายการในแอปเดียว Power Apps สร้างแบบจำลองออบเจ็กต์เอกสาร HTML เพื่อแสดงผลแต่ละการควบคุม ตัวควบคุมเพิ่มเติมที่คุณเพิ่ม Power Apps ต้องการระยะเวลาในการสร้างเพิ่มเติม
คุณสามารถบรรลุผลเช่นเดียวกัน และแอปจะเริ่มทำงานได้เร็วขึ้นหากคุณใช้แกลเลอรีแทนการควบคุมเฉพาะสำหรับบางกรณี คุณอาจต้องการลดจำนวนชนิดตัวควบคุมบนหน้าจอเดียวกัน ตัวควบคุมบางตัว (เช่นตัวแสดง PDF ตารางข้อมูล และกล่องคำสั่งผสม) (เช่นโปรแกรมอ่าน PDF ตารางข้อมูล และกล่องคำสั่งผสม) ดึงสคริปต์การทำงานขนาดใหญ่ และใช้เวลานานกว่าในการแสดงผลบนหน้าจอ
เพิ่มประสิทธิภาพคุณสมบัติ OnStart
ใช้ฟังก์ชัน ClearCollect เพื่อแคชข้อมูลภายในเครื่อง หากไม่มีการเปลี่ยนแปลงระหว่างเซสชันของผู้ใช้ นอกจากนี้ ให้ใช้ฟังก์ชัน พร้อมกัน โหลดแหล่งข้อมูลพร้อมกัน วิธีนี้สามารถลดระยะเวลาที่แอปต้องโหลดข้อมูลได้ครึ่งหนึ่ง ข้อมูลเพิ่มเติม: ฟังก์ชันพร้อมกันใน Power Apps
หากไม่ใช้ฟังก์ชัน พร้อมกัน สูตรต่อไปนี้โหลดตารางสี่ตารางแบบครั้งต่อครั้ง
ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
คุณสามารถยืนยันลักษณะการทำงานนี้ได้ในเครื่องมือสำหรับนักพัฒนาสำหรับเบราว์เซอร์ของคุณ ดังที่แสดงในภาพต่อไปนี้
คุณสามารถใส่สูตรเดียวกันในฟังก์ชัน Concurrent เพื่อลดเวลาโดยรวมที่ต้องการใช้งาน:
Concurrent(
ClearCollect( Product, '[SalesLT].[Product]' ),
ClearCollect( Customer, '[SalesLT].[Customer]' ),
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))
ด้วยการเปลี่ยนแปลงนี้ แอปจะดึงตารางพร้อมกันดังที่แสดงในภาพต่อไปนี้
หมายเหตุ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาด้านประสิทธิภาพและวิธีแก้ปัญหาที่เกี่ยวข้องกับ OnStart โปรดอ่าน เหตุการณ์ OnStart ต้องการการปรับแต่ง
เคล็ดลับ
เราแนะนำให้ใช้คุณสมบัติ App.StartScreen เนื่องจากช่วยลดความยุ่งยากในการเปิดแอปและเพิ่มประสิทธิภาพของแอป
แคชข้อมูลจากตารางการค้นหา
ใช้ฟังก์ชัน ตั้งค่า เพื่อแคชข้อมูลจากตารางการค้นหาภายในเครื่อง เพื่อหลีกเลี่ยงการเรียกคืนข้อมูลซ้ำๆ จากแหล่งข้อมูล เทคนิคนี้จะเพิ่มประสิทธิภาพการทำงาน หากข้อมูลไม่เปลี่ยนแปลงในระหว่างเซสชัน ดังแสดงในตัวอย่างต่อไปนี้ ข้อมูลจะถูกเรียกคืนจากแหล่งข้อมูลเพียงครั้งเดียวและจะถูกอ้างอิงภายในจนกว่าผู้ใช้จะปิดแอป
Set(CustomerOrder, Lookup(Order, id = “123-45-6789”));
Set(CustomerName, CustomerOrder.Name);
Set(CustomerAddress, CustomerOrder.Address);
Set(CustomerEmail, CustomerOrder.Email);
Set(CustomerPhone, CustomerOrder.Phone);
วิธีนี้มีประโยชน์มากกว่าสำหรับข้อมูล เช่น ข้อมูลผู้ติดต่อ ค่าเริ่มต้น หรือข้อมูลผู้ใช้ที่ไม่เปลี่ยนแปลงบ่อย คุณจึงสามารถใช้เทคนิคนี้ได้โดยใช้ฟังก์ชัน ค่าเริ่มต้น และ ผู้ใช้ ด้วย
หลีกเลี่ยงการขึ้นต่อกันของตัวควบคุมระหว่างหน้าจอ
เพื่อปรับปรุงประสิทธิภาพ หน้าจอของแอปจะโหลดลงในหน่วยความจำเท่าที่จำเป็นเท่านั้น การเพิ่มประสิทธิภาพนี้สามารถขัดขวางได้ หากโหลดหน้าจอ 1 และสูตรใดสูตรหนึ่งใช้คุณสมบัติของตัวควบคุมจากหน้าจอ 2 ตอนนี้ต้องโหลดหน้าจอ 2 เพื่อเติมเต็มการขึ้นต่อกันก่อนจึงจะสามารถแสดงหน้าจอ 1 ได้ ลองนึกถึงหน้าจอ 2 มีการขึ้นต่อกันบนหน้าจอ 3 ซึ่งมีการขึ้นต่อกันอื่นบนหน้าจอ 4 และอื่นๆ ห่วงโซ่การขึ้นต่อกันนี้สามารถทำให้หลายหน้าจอโหลดได้
ด้วยเหตุนี้ หลีกเลี่ยงการขึ้นต่อกันของสูตรระหว่างหน้าจอ ในบางกรณี คุณสามารถใช้ตัวแปรส่วนกลาง หรือคอลเลกชันเพื่อแบ่งปันข้อมูลระหว่างหน้าจอ
นี่เป็นข้อยกเว้น: ในตัวอย่างก่อนหน้า ลองนึกว่าวิธีเดียวที่จะแสดงหน้าจอ 1 คือโดยการนำทางจากหน้าจอ 2 จากนั้นหน้าจอ 2 จะถูกโหลดในหน่วยความจำแล้วเมื่อต้องโหลดหน้าจอ 1 ไม่จำเป็นต้องทำงานเพิ่มเติมเพื่อเติมเต็มการพึ่งพาสำหรับหน้าจอ 2 ดังนั้นจึงไม่มีผลกระทบต่อประสิทธิภาพ
ใช้การมอบสิทธิ์
ถ้าเป็นไปได้ ให้ใช้ฟังก์ชันที่มอบสิทธิ์การประมวลผลข้อมูลไปยังแหล่งข้อมูลแทนการเรียกคืนข้อมูลไปยังอุปกรณ์ภายในเครื่องเพื่อประมวลผล หากแอปต้องประมวลผลข้อมูลภายในระบบ การดำเนินการนี้ต้องใช้กำลังการประมวลผล หน่วยความจำ และแบนด์วิธเครือข่ายมากขึ้นโดยเฉพาะอย่างยิ่งหากชุดข้อมูลมีขนาดใหญ่
เคล็ดลับ
หากต้องการเรียนรู้เกี่ยวกับฟังก์ชันที่สามารถมอบสิทธิ์ได้ที่ตัวเชื่อมต่อบางตัวรองรับ โปรดดูที่ คู่มือตัวเชื่อมต่อ
สำหรับตัวอย่างของฟังก์ชันที่มอบหมายได้ ให้พิจารณาคอลัมน์รหัสที่กำหนดเป็นชนิดข้อมูล ตัวเลข ในรายการที่สร้างโดยใช้ Microsoft Lists สูตรในตัวอย่างต่อไปนี้จะส่งคืนผลลัพธ์ตามที่คาดไว้ อย่างไรก็ตาม สูตรแรกสามารถมอบสิทธิ์ได้ ในขณะที่สูตรที่สองไม่สามารถมอบสิทธิ์ได้
สูตร | มอบหมายได้หรือไม่ |
---|---|
Filter ('List data source', ID = 123 ) |
ตกลง |
Filter(`List data source', ID ="123") |
ไม่ |
ตามที่เราสมมติว่าคอลัมน์รหัสใน SharePoint ถูกกำหนดด้วยชนิดข้อมูล ตัวเลข ค่าด้านขวามือควรเป็นตัวแปรตัวเลขแทนตัวแปรสตริง มิฉะนั้น ความไม่ตรงกันดังกล่าวอาจทำให้สูตรไม่สามารถมอบสิทธิ์ได้
การใช้ ฟังก์ชันที่ไม่สามารถกำหนดค่าได้และขีดจำกัดแถวข้อมูลที่ไม่เหมาะสมสำหรับการสืบค้นที่ไม่สามารถมอบสิทธิ์ได้ อาจมีผลเสียต่อประสิทธิภาพของแอป ข้อมูลเพิ่มเติม: ทำความเข้าใจการรับมอบสิทธิ์ในแอปพื้นที่ทำงาน
ใช้การโหลดล่าช้า
เปิด คุณลักษณะพรีวิว สำหรับการโหลดล่าช้าหากแอปของคุณมีหน้าจอมากกว่า 10 หน้า ไม่มีกฎและตัวควบคุมจำนวนมากที่อยู่ในหลายหน้าจอและไม่ถูกผูกมัดโดยตรงกับแหล่งข้อมูล หากคุณสร้างแอปประเภทนี้และไม่ได้เปิดใช้งานคุณลักษณะนี้ ประสิทธิภาพของแอปอาจต่ำเนื่องจากต้องมีการสร้างตัวควบคุมในทุกหน้าจอถึงแม้ว่าหน้าจอนั้นจะไม่ได้เปิดอยู่ก็ตาม นอกจากนี้ หน้าจอทั้งหมดของแอปจะต้องได้รับการอัปเดตทุกครั้งที่มีการเปลี่ยนแปลงแหล่งข้อมูล เช่น เมื่อผู้ใช้เพิ่มเรกคอร์ด
การทำงานกับชุดข้อมูลขนาดใหญ่
ใช้แหล่งข้อมูลและสูตรที่สามารถรับสิทธิ์เพื่อให้แอปของคุณทำงานได้ดี ในขณะที่ผู้ใช้สามารถเข้าถึงข้อมูลทั้งหมดที่ต้องการได้ และหลีกเลี่ยงขีดจำกัดของจำนวนแถวข้อมูล 2000 แถว สำหรับการสอบถามที่ไม่สามารถมอบสิทธิ์ได้ สำหรับคอลัมน์เรกคอร์ดข้อมูลที่ผู้ใช้สามารถค้นหา กรอง หรือจัดเรียงข้อมูล ให้ใช้ดัชนีในคอลัมน์ตามที่อธิบายโดยแหล่งข้อมูล เช่น เซิร์ฟเวอร์ SQL หรือ SharePoint
หมายเหตุ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่ชุดข้อมูลขนาดใหญ่อาจทำให้เกิดปัญหาด้านประสิทธิภาพโดยทั่วไปบนแพลตฟอร์มต่าง ๆ โปรดอ่าน ชุดข้อมูลขนาดใหญ่โหลดช้าบนแพลตฟอร์มต่าง ๆ
เผยแพร่แอปใหม่เป็นประจำ
ขอแนะนำให้ผู้ผลิตเผยแพร่แอปของตนเป็นประจำ ในฐานะที่แพลตฟอร์ม Power Apps ได้รับการเพิ่มประสิทธิภาพและปรับใช้อย่างต่อเนื่อง แอปของคุณจะถูกสร้างขึ้นใหม่ภายในการเพิ่มประสิทธิภาพแพลตฟอร์มล่าสุดเมื่อคุณเผยแพร่ใหม่
หลีกเลี่ยงการทำซ้ำสูตรเดียวกันในหลายๆ ที่
หากคุณสมบัติหลายอย่างใช้สูตรเดียวกัน (โดยเฉพาะถ้าซับซ้อน) ให้ลองตั้งค่าหนึ่งครั้งจากนั้นอ้างอิงผลลัพธ์ของคุณสมบัติแรกในลำดับถัดมา ตัวอย่างเช่น ห้ามตั้งค่าคุณสมบัติ DisplayMode ของตัวควบคุม A, B, C, D และ E ไปยังสูตรที่ซับซ้อนเดียวกัน ให้ตั้งค่าคุณสมบัติ DisplayMode ของ A เป็นสูตรที่ซับซ้อนแทน ตั้งค่าคุณสมบัติ DisplayMode ของ B เป็นผลลัพธ์ของคุณสมบัติ DisplayMode ของ A และอื่นๆ สำหรับ C, D และ E
เปิดใช้งาน DelayOutput สำหรับตัวควบคุม การป้อนข้อความ ทั้งหมด
หากคุณมีหลายสูตรหรือกฎที่อ้างอิงค่าของตัวควบคุม การป้อนข้อความ ตั้งค่าคุณสมบัติ DelayedOutput ของตัวควบคุมนั้นเป็นจริง คุณสมบัติ ข้อความ ของการควบคุมนั้นจะได้รับการอัปเดตหลังจากหยุดการกดแป้นพิมพ์ติดต่อกันอย่างรวดเร็วแล้วเท่านั้น สูตรหรือกฎจะไม่ทำงานหลายครั้ง และประสิทธิภาพของแอปจะดีขึ้น
หลีกเลี่ยงการใช้ Form.Updates ในกฎและสูตร
หากคุณอ้างอิงค่าที่ผู้ใช้ป้อนในกฎหรือสูตรโดยใช้ตัวแปร Form.Updates
ค่าจะวนซ้ำบนการ์ดข้อมูลของฟอร์มทั้งหมดและสร้างเรกคอร์ดในแต่ละครั้ง เพื่อให้แอปของคุณมีประสิทธิภาพมากขึ้น ให้อ้างอิงค่าโดยตรงจากบัตรข้อมูลหรือค่าตัวควบคุม
ใช้สปินเนอร์ DelayItemLoading และ Loading เพื่อปรับปรุงประสิทธิภาพในแกลเลอรี
แกลเลอรีอาจใช้เวลาในการแสดงผลแถวที่มองเห็นนานขึ้น ทั้งนี้ขึ้นอยู่กับการกำหนดค่า มีสองวิธีในการปรับปรุงประสิทธิภาพ
- ลดความซับซ้อนของเทมเพลต ตัวอย่างเช่น พิจารณาลดจำนวนการควบคุมการอ้างอิงถึงการค้นหา
- แกลเลอรีที่มีเทมเพลตที่ซับซ้อนจะได้รับประโยชน์จากการมี DelayItemLoading ตั้งค่าเป็น จริง และ LoadingSpinner ตั้งค่าเป็น LoadingSpinner.Controls การเปลี่ยนแปลงนี้จะปรับปรุงประสบการณ์การรับรู้เมื่อเวลาในการแสดงผลนานขึ้น นอกจากนี้ DelayItemLoading ยังจะเลื่อนการแสดงผลของเทมเพลตซึ่งจะช่วยให้ส่วนที่เหลือของหน้าจอแสดงผลได้เร็วขึ้น เนื่องจากทั้งหน้าจอและแกลเลอรีไม่ได้แข่งขันกันเพื่อแย่งชิงทรัพยากร
เปิดใช้งานการโหลดแอปล่วงหน้าเพื่อเพิ่มประสิทธิภาพ
คุณสามารถเลือกโหลดแอปของคุณไว้ล่วงหน้าเพื่อเพิ่มประสิทธิภาพการทำงาน
ลงชื่อเข้าใช้ Power Apps แล้วเลือก แอป ในเมนู
เลือก การดำเนินการเพิ่มเติม (...) สำหรับแอปที่คุณต้องการแชร์ จากนั้นเลือก การตั้งค่า
ในแผงการตั้งค่า สลับ โหลดแอปล่วงหน้าเพื่อเพิ่มประสิทธิภาพ เป็น ใช่ แอปจะโหลดล่วงหน้า
เพื่อให้การเปลี่ยนแปลงมีผลสำหรับแอปที่ฝังใน Teams ให้ลบและเพิ่มแอปของคุณใน Teams อีกครั้ง
หมายเหตุ
สิ่งนี้ทำให้สามารถเข้าถึงเนื้อหาแอปที่คอมไพล์ได้ผ่านจุดสิ้นสุดที่ไม่ผ่านการรับรองความถูกต้อง เพื่อเปิดใช้งานการโหลดก่อนการรับรองความถูกต้อง อย่างไรก็ตาม ผู้ใช้ยังคงสามารถใช้แอปของคุณเพื่อเข้าถึงข้อมูลผ่านตัวเชื่อมต่อได้หลังจากการรับรองความถูกต้องและการให้สิทธิ์เสร็จสิ้นเท่านั้น ลักษณะการทำงานนี้ช่วยให้แน่ใจว่าข้อมูลที่แอปของคุณดึงมาจากแหล่งข้อมูลจะไม่สามารถใช้ได้สำหรับผู้ใช้ที่ไม่ผ่านการรับรองความถูกต้อง เนื้อหาแอปที่คอมไพล์ประกอบด้วยคอลเลกชันไฟล์ JavaScript ที่มีข้อความที่เขียนในการควบคุมแอป (เช่น ตัวควบคุม PCF) เนื้อหาสื่อ (เช่น รูปภาพ) ชื่อแอป และ URL สภาพแวดล้อมที่แอปอยู่
โดยทั่วไป แอปควรดึงสื่อและข้อมูลจากแหล่งข้อมูล ผ่านการเชื่อมต่อ หากต้องเพิ่มสื่อและข้อมูลลงในแอปโดยไม่ได้มาจากการเชื่อมต่อ และถือว่ามีความละเอียดอ่อน คุณอาจต้องการปิดใช้งานการตั้งค่านี้ โปรดทราบว่าการปิดใช้การตั้งค่านี้จะส่งผลให้ผู้ใช้รอนานขึ้นอีกเล็กน้อยเพื่อเข้าถึงแอป
ที่เก็บข้อมูลแอปในอุปกรณ์ของคุณ
เพื่อให้ผู้ใช้สามารถดึงรายละเอียดแอปได้เร็วขึ้นเมื่อเริ่มต้นแอป ข้อมูลบางอย่างจะถูกจัดเก็บไว้ในอุปกรณ์ของคุณในแคชของเบราว์เซอร์ ข้อมูลที่จะจัดเก็บรวมถึงรายละเอียดแอป สภาพแวดล้อม และการเชื่อมต่อ ข้อมูลนี้จะเก็บไว้ในเบราว์เซอร์ตามขีดจำกัดที่เก็บข้อมูลของแต่ละเบราว์เซอร์.. หากต้องการล้างข้อมูลที่เก็บไว้ ดูที่ คำแนะนำสำหรับแต่ละเบราว์เซอร์
ขั้นตอนถัดไป
ตรวจสอบ มาตรฐานการเข้ารหัส สำหรับการเพิ่มประสิทธิภาพแอปให้สูงสุดและทำให้แอปรักษาได้ง่ายขึ้น
ดูเพิ่มเติม
ทำความเข้าใจขั้นตอนการใช้งานแอปพื้นที่ทำงานและโฟลว์การเรียกใช้ข้อมูล
ปัญหาและวิธีแก้ไขประสิทธิภาพการทำงานของแอปพื้นที่ทำงานทั่วไป
แหล่งที่มาทั่วไปของประสิทธิภาพการทำงานช้าสำหรับแอปพื้นที่ทำงาน
ปัญหาและวิธีแก้ไขทั่วไปสำหรับ Power Apps
การแก้ไขปัญหาการเริ่มต้นสำหรับ Power Apps
หมายเหตุ
บอกให้เราทราบเกี่ยวกับภาษาที่คุณต้องการในคู่มือ ทำแบบสำรวจสั้นๆ (โปรดทราบว่าแบบสำรวจนี้เป็นภาษาอังกฤษ)
แบบสำรวจนี้ใช้เวลาทำประมาณเจ็ดนาที ไม่มีการเก็บข้อมูลส่วนบุคคล (คำชี้แจงสิทธิ์ส่วนบุคคล)