Tối ưu hóa ứng dụng hoặc tải trang để có hiệu suất cao nhất

Một trong những yếu tố chính hình thành nên nhận thức của người dùng về ứng dụng là tốc độ mở và hoạt động của ứng dụng. Do đó, việc ưu tiên mục tiêu này là rất quan trọng khi xây dựng một ứng dụng hiệu quả. Để đạt được hiệu suất ứng dụng tối ưu, có ba lĩnh vực chính cần chú ý:

  1. Tải dữ liệu nhanh
  2. Tính toán hiệu quả
  3. Giảm thiểu các nguồn lực cần thiết

Mỗi lĩnh vực này đều có một số phản mô hình chung.

Tải dữ liệu nhanh

Thực hiện theo các hướng dẫn sau để tải dữ liệu ứng dụng nhanh hơn.

Tránh trực tiếp đưa vào bộ sưu tập một lượng lớn dữ liệu

Đôi khi tác giả sử dụng ClearCollect() để sao chép dữ liệu từ máy chủ vào bộ sưu tập trong ứng dụng của họ. Thực hành này là giải pháp tạm thời cho những hạn chế về việc phân quyền trong nguồn hoặc vì họ có kế hoạch sử dụng các bộ sưu tập trong ứng dụng cho các mục đích khác. Việc sử dụng ClearCollect() có khả năng tăng tốc độ của ứng dụng khi bộ sưu tập được sử dụng sau này. Tuy nhiên, điều quan trọng là phải thận trọng khi thực hiện. Sử dụng ClearCollect theo cách này có thể khiến thời gian tải ứng dụng hoặc khi điều hướng giữa các trang chậm hơn. ClearCollect() phải hoàn tất trước khi bạn có thể xem dữ liệu trong thư viện hoặc bảng. Bước này có thể mất nhiều thời gian nếu có nhiều dữ liệu hoặc nếu bạn sử dụng phương pháp này cho quá nhiều nguồn dữ liệu. Bộ sưu tập được sử dụng tốt nhất trong trường hợp dữ liệu nhỏ và bạn cần thực hiện nhiều phép tính trên bộ sưu tập. Ví dụ, một cách sử dụng bộ sưu tập hiệu quả là sử dụng giỏ hàng trực tuyến. Khách hàng có thể cập nhật và xóa sản phẩm nhiều lần trước khi quyết định xác nhận đơn hàng. Ngoài ra, bạn có thể bổ sung thêm nhiều mục dữ liệu vào bộ sưu tập như chiết khấu tiềm năng, điểm nổi bật, v.v. Dữ liệu "chỉ đọc" phải được truy cập theo cách gốc - mà không cần đưa vào bộ sưu tập.

Hãy cân nhắc tránh gọi Power Automate để điền vào bộ sưu tập

Vấn đề này có đôi chút thay đổi so với phần trước. Đôi khi tác giả cũng sử dụng Power Automate để đưa vào bộ sưu tập của họ Power Apps. Chi phí hiệu suất để khởi tạo là khoảng 0,6 giây Power Automate. Power Automate phải được khởi chạy độc lập mỗi lần được gọi. Nó phải phân bổ bộ nhớ, được kết nối với các thành phần phù hợp và sẵn sàng chạy. Giống như lời khuyên trên, một hoặc hai cuộc gọi đến Power Automate có thể không phải là vấn đề tùy thuộc vào ứng dụng của bạn. Tuy nhiên, hầu như các ứng dụng có hiệu suất kém nhất đều lạm dụng cách tiếp cận này. Chi phí hiệu suất có thể tăng nhanh và làm hỏng hiệu suất của ứng dụng.

Tránh sử dụng SaveData() và LoadData() như một kịch bản ngoại tuyến hoàn chỉnh

Một số tác giả sử dụng ClearCollect() và sau đó là SaveData() để lưu trữ dữ liệu cho mục đích sử dụng ngoại tuyến nói chung. Bạn có thể sử dụng SaveData() để lưu bộ sưu tập vào thiết bị của mình và LoadData() để tải bộ sưu tập khi bạn ngoại tuyến. Tuy nhiên, cách tiếp cận này không được khuyến khích trong trường hợp có lượng dữ liệu lớn hoặc dữ liệu phức tạp. Điều này làm ứng dụng của bạn chậm hơn vì phải chờ ClearCollect() hoàn tất trước khi có thể hiển thị dữ liệu. Bạn chỉ nên sử dụng SaveData() và LoadData() cho các tình huống dữ liệu nhỏ và đơn giản như tùy chọn và danh sách ngắn. Một cách tốt hơn để làm việc với lượng lớn dữ liệu ngoại tuyến là sử dụng tính năng ngoại tuyến hoạt động với Power Apps . Dataverse Tính năng này có thể xử lý dữ liệu lớn và phức tạp hơn một cách hiệu quả hơn.

Sử dụng lựa chọn cột rõ ràng

Tính năng chọn cột rõ ràng được bật theo mặc định. Tuy nhiên, một số tác giả lại tắt tính năng này. Vấn đề là khi bật lựa chọn cột rõ ràng (ECS), đôi khi các cột không được truy xuất từ nguồn dữ liệu nếu dữ liệu được truy xuất lần đầu tiên vào bộ sưu tập. Vì một số bảng có thể có nhiều cột nên ECS sẽ tự động tính toán những cột nào cần truy xuất dựa trên cách sử dụng chúng trong các điều khiển (ví dụ: thư viện ảnh và biểu mẫu). Vì một số bảng có thể có nhiều cột nên việc giảm kích thước tải xuống có thể tăng tốc hiệu suất. Một số bảng có thể có tới hàng trăm cột hoặc hơn. Nếu ứng dụng của bạn chỉ cần sử dụng 10 cột và bạn lấy hết tất cả các cột từ một bảng có 100 cột, bạn sẽ lấy đi lượng dữ liệu gấp mười lần so với lượng dữ liệu thực sự cần.

Hầu hết các vấn đề phát sinh khi đưa dữ liệu vào bộ sưu tập. Nếu một cột được tham chiếu rõ ràng trong một điều khiển thì ECS sẽ hoạt động tốt. Và ECS thường có tác dụng đối với các bộ sưu tập. Tuy nhiên, dòng dõi cột đôi khi bị mất khi dữ liệu di chuyển qua các bộ sưu tập và biến. Và do đó Power Apps có thể mất dấu cột mà nó cần lấy. Để giải quyết vấn đề này, bạn có thể buộc Power Apps "ghi nhớ" cột bằng cách sử dụng ShowColumns hàm. Ví dụ:

    ClearCollect(
        MyColTable, 
        ShowColumns(Filter(BankAccounts, AcountNo = 32),
        "Col1", 
        "Col2", 
        "Col3")
    );

Trong đó Col1, Col2Col3 là các cột mà bạn mong đợi được truy xuất từ nguồn dữ liệu (ví dụ: Account nguồn dữ liệu).

Ngoài ra, bạn có thể thêm một điều khiển ẩn vào biểu mẫu để tham chiếu đến cột đó. Điều này buộc Power Apps phải "ghi nhớ" cột.

Tính toán nhanh

Tính toán nhanh (hoặc hiệu quả) là một mục tiêu hiệu suất riêng biệt. Để biết thêm thông tin, hãy xem Tính toán nhanh (hiệu quả). Tuy nhiên, có một số mẫu phản phổ biến cũng có thể ảnh hưởng đến việc tải ứng dụng và chúng tôi sẽ thảo luận về chúng ở đây. Dưới đây là danh sách các tối ưu hóa bạn nên cân nhắc có thể ảnh hưởng đến việc khởi chạy ứng dụng hoặc điều hướng trang.

Sử dụng App.Formulas

Trong lịch sử, nhiều tác giả đã đưa một lượng lớn phép tính vào OnStart. Khi bạn đặt một biểu thức trong OnStart, nó sẽ buộc Power Apps để chạy biểu thức đó chính xác khi ứng dụng khởi động và trước mọi thứ khác. Tuy nhiên, với sự ra đời của App.Formulas, bạn có thể cho phép Power Apps quyết định khi nào chạy một biểu thức. Power Apps có thể chạy công thức 'Đúng lúc' trước khi cần đến. Để biết thêm thông tin, hãy xem Công thức ứng dụng. Sử dụng App.Formulas để chia công thức của bạn thành các phần Power Apps có thể sắp xếp thực hiện hiệu quả hơn.

Sử dụng đồng thời

Sử dụng hàm Concurrent để cho phép các công thức được thực thi cùng lúc. Người ta thường sử dụng hàm này để điền dữ liệu vào các bộ sưu tập vì nó cho phép thực thi song song. Mặc dù điều này có thể tăng tốc độ đôi chút, nhưng việc thêm nhiều nguồn dữ liệu có thể gây ra vấn đề về thời gian và điều tiết.

Sử dụng hiệu suất nâng cao cho các điều khiển ẩn

Khi được bật theo mặc định trong tất cả các ứng dụng mới được tạo kể từ tháng 12 năm 2022, Power Apps sẽ không hiển thị bất kỳ điều khiển nào không hiển thị ban đầu.

Giảm thiểu các nguồn lực cần thiết

Giảm thiểu tài nguyên cần thiết để khởi chạy ứng dụng hoặc màn hình của bạn. Nỗ lực này bao gồm việc xác định phạm vi hoặc phân vùng cẩn thận các tài nguyên mà ứng dụng hoặc màn hình của bạn cần. Dưới đây là một số cách tiếp cận có thể giúp bạn.

Sử dụng màn hình bắt đầu ít phụ thuộc và loại bỏ những màn hình không sử dụng.

Sử dụng màn hình đầu tiên ít phụ thuộc như lời chào mừng trên ứng dụng của bạn. Tạo một màn hình không tải thư viện ảnh, bảng hoặc dữ liệu tham chiếu. Tính năng này quản lý nhận thức của người dùng về tốc độ và cho phép trì hoãn một số phép tính sau một cách hợp lý. Power Fx Nếu bạn có bất kỳ màn hình nào không sử dụng, hãy xóa chúng đi.

Giữ sự phụ thuộc giữa các màn hình ở mức thấp

Tham chiếu giữa các trang sẽ buộc tải các trang bổ sung thông qua tham chiếu, ví dụ: tham chiếu các điều khiển trên các trang và đưa vào bộ sưu tập. Một số tài liệu tham khảo có thể không tránh khỏi. Nếu có thể, hãy tập trung các tham chiếu chung vào một trang duy nhất để chỉ tải trang đó.

Hãy xem xét phương tiện nhúng

Đôi khi tác giả nhúng phương tiện truyền thông vào ứng dụng của họ để đảm bảo tải nhanh. Nếu bạn có phương tiện nhúng, hãy cân nhắc xem bạn có sử dụng phương tiện đó hay không. Nếu không, hãy xóa nó. Nếu bạn đã nhúng tệp .png, hãy cân nhắc thay thế bằng tệp .svg có dung lượng nhỏ hơn. Lưu ý rằng nếu bạn sử dụng .svg, phông chữ cho .svg phải có trên máy khách. Hãy xem xét độ phân giải phương tiện được nhúng. Nó có quá cao so với thiết bị sử dụng không?

Đừng quên App.StartScreen

Nếu bạn sử dụng App.StartScreen, hãy đảm bảo màn hình đầu tiên là màn hình trống. Do cách đóng gói ứng dụng hiện tại, màn hình logic đầu tiên luôn được đóng gói cùng với logic khởi tạo ứng dụng và sẽ được khởi tạo, bất kể chúng ta có điều hướng đến màn hình đó hay không.

Hãy cân nhắc việc chia nhỏ ứng dụng

Nếu ứng dụng của bạn lớn, hãy cân nhắc phân vùng nó thành các ứng dụng nhỏ hơn. Nếu chức năng được phân tách đủ riêng biệt ở các phần khác nhau của ứng dụng, cách tiếp cận này có thể hiệu quả. Trong trường hợp này, bạn tạo một ứng dụng riêng biệt thực tế mà bạn khởi chạy với các tham số bao gồm ngữ cảnh từ ứng dụng đầu tiên hoặc ứng dụng phần tử cha.

Gợi ý

Để đạt được mục tiêu khởi chạy ứng dụng và trang nhanh, hãy cân nhắc các câu hỏi và gợi ý sau:

  1. Bạn có đang tải nhiều dữ liệu vào màn hình đầu tiên không? Bạn có thể sử dụng màn hình đầu tiên khác không?
  2. Bạn có chạy nhiều lệnh hoặc biểu thức khi bắt đầu tải ứng dụng không? Power Fx Bạn có thể hoãn các lệnh và biểu thức này lại đến thời điểm sau trong ứng dụng không? Chỉ lấy dữ liệu bạn thực sự cần để khởi động ứng dụng? 1 Bạn có thể chuyển đổi biểu thức trong App.OnStart thành công thức được đặt tên bằng App.Formulas không? Điều này cho phép quyết định thời điểm thực sự thực thi công thức thay vì buộc công thức phải xảy ra khi tải hoặc điều hướng các sự kiện. Power Fx
  3. Bạn có thể sử dụng một Power Automate luồng riêng để tạo bảng tạm thời trong kho dữ liệu cục bộ như Dataverse kết hợp dữ liệu từ nhiều nguồn khác nhau không? Và sau đó truy cập dữ liệu đó trong Power App của bạn?
  4. Đối với việc khởi động quy trình kinh doanh, bạn có thể sử dụng các hành động do Máy chủ kích hoạt thay vì gọi Luồng không? Power Automate
  5. Bạn có thể tạo chế độ xem trên máy chủ để kết nối dữ liệu giúp bạn không?
  6. Nếu bạn muốn sử dụng dữ liệu ngoại tuyến trong ứng dụng của mình, bạn có thể sử dụng tính năng ngoại tuyến tương thích với Power Apps ? Dataverse Nếu dữ liệu của bạn không có trong Dataverse, bạn có thể di chuyển nó đến đó không?