使用延遲載入改善大型表單的效能

懶惰載入簡介

當表單變得龐大而複雜,並包含數百個欄位和數千個欄位時,使用者在執行時期轉換表單時會體驗到長時間的回應。 為了將回應時間降到最低,最適化表單可讓您將表單分割為邏輯片段,並設定延遲片段的初始化或載入,直到需要看到片段為止。 這稱為延遲載入。 此外,當使用者導覽至表單中的其他區段,且不再顯示片段時,就會卸載為延遲載入所設定的片段。

首先,讓我們先瞭解需求和準備步驟,再設定延遲載入。

準備配置延遲載入

在您設定最適化表單中片段的延遲載入之前,請務必先定義策略以建立片段、識別指令碼中使用或其他片段中參考的值,並定義規則以控制延遲載入片段中欄位的可見性。

  • 識別和建立
    片段您只能設定適應性表單片段,以進行延遲載入。片段是駐留在最適化表單外的獨立區段,可跨表單重複使用。 因此,實施延遲載入的第一步是識別表單中的邏輯區段,並將它們轉換為片段。 您可以從頭開始建立片段,或將現有的表單面板儲存為片段。

    如需建立片段的詳細資訊,請參閱最適化表單片段

  • 識別並標籤全域
    值以表單為基礎的交易包含動態元素,以從使用者擷取相關資料並加以處理,以簡化表單填寫體驗。例如,您的表單在片段X中有欄位A,其值會決定其他片段中欄位B的有效性。 在這種情況下,如果將片段X標籤為延遲載入,則欄位A的值必須可用於驗證欄位B,即使未載入片段X。 為達到此目的,您可將欄位A標示為全域,以確保其值可用於驗證未載入片段X的欄位B。

    有關如何使欄位值全局化的資訊,請參見配置延遲載入

  • 控制欄位可見性的寫入規
    則表單包含某些欄位和區段,這些欄位和區段不適用於所有使用者和所有條件。表單作者和開發人員會使用可見度或顯示隱藏規則,根據使用者輸入來控制其可見度。 例如,在表單的「就業狀態」欄位中選擇「失業」的用戶不會看到「辦公室地址」欄位。 有關編寫規則的詳細資訊,請參閱使用規則編輯器

    您可以在緩慢載入的片段中運用可見性規則,以便條件欄位只在需要時才顯示。 此外,在延遲載入片段的可見性運算式中,將條件欄位標示為全域以參照它。

配置延遲載入

執行下列步驟,以啟用自適應表單片段的延遲載入:

  1. 在製作模式中開啟最適化表單,其中包含您要啟用以延遲載入的片段。

  2. 選擇最適化表單片段,然後點選cmppr

  3. 在側欄中,啟用​Load fragment lazily​並點選​Done

    啟用最適化表單片段的延遲載入

    此片段現在已啟用為延遲載入。

您可以將懶惰載入片段中的物件值標示為全域,以便在未載入包含片段時,在指令碼中使用這些值。 執行下列動作:

  1. 在製作模式中開啟最適化表單片段。

  2. 點選您要將其值標示為全域的欄位,然後點選

  3. 在側欄中,啟用​在延遲載入期間使用值
    側欄中的延遲載入欄位

    該值現在標籤為全局,即使在卸載包含片段時,也可用於指令碼中。

配置延遲載入的注意事項和最佳做法

使用延遲載入時,應注意的一些限制、建議和重要點如下:

  • 建議使用XSD架構的最適化表單,而非XFA架構的最適化表單,以設定大型表單上的延遲載入。 在基於XFA的自適應表單中由於延遲載入實現而帶來的效能增益相對而言小於基於XSD的自適應表單中的增益。
  • 請勿在回應式格線版面中設定片段的延遲載入。 這會導致效能降低。
  • 建議不要在載入最適化表單時,在第一個面板中設定片段的延遲載入。
  • 片段階層中支援最多2個層級的延遲載入。
  • 確保標籤為全域的欄位在最適化表單中是唯一的。
  • 考慮針對應根據條件顯示或隱藏的片段編寫可見性規則。 例如,您可以根據使用者指定的婚姻狀態來顯示或隱藏「配偶詳細資料」片段。
  • 懶惰載入的片段不支援檔案附件和條款與條件元件。

描述配置延遲載入的最佳實踐

在開發適用於延遲載入面板的指令碼時,請注意的重要點如下:

  • 確保初始化和計算在延遲載入片段欄位上使用的指令碼在本質上是無效的。 冪等指令碼是指即使在多次執行後仍具有相同效果的指令碼。

  • 使用欄位的全域可用屬性,讓位於延遲載入面板中的欄位值可用於表單的所有其他面板。

  • 請勿轉送延遲面板內欄位的參考值,而不考慮欄位是否在片段間全域標籤。

  • 使用面板重設功能,使用下列按一下運算式重設面板上所有可見的項目。

    guideBridge.resolveNode(guideBridge.getFocus({"focusOption":"navigablePanel"})。resetData()

本頁內容