我使用這篇文章 使用 generator-easy-ui5 快速建立 SAP UI5 應用的工程結構
介紹的工具,建立了一個 SAP UI5 應用,然後執行了 SAP UI5 Tools 提供的命令 fiori add deploy-config
:
之後 SAP UI5 工程裡有兩個檔案自動被該命令修改了:
- package.json
- ui5-deploy.yaml
package.json 檔案的變化
執行命令之前:"deploy": "fiori verify"
執行命令之後:"deploy": "ui5 build preload --clean-dest --config ui5-deploy.yaml --include-task=generateManifestBundle generateCachebusterInfo && rimraf archive.zip",
也就是說,fiori deploy
完成的步驟,包含 build,生成 ManifestBundle
和 CachebusterInfo
,以及刪除 archive.zip
這幾個階段。
ui5-deploy.yaml 的變化
就是包含了我們在執行 fiori add deploy-config
命令之後,在 deploy 嚮導裡維護的資訊。
可以單獨執行 npm run build
命令:
這個 build 命令執行之後,在 dist
資料夾內,生成了三個新檔案:
- Component-preload.js
- manifest-bundle.zip
- sap-ui-cachebuster-info.json
這個 manifest-bundle.zip
裡也沒有什麼特殊的檔案。
所謂 cache buster
機制,允許 SAP UI5 僅在 SAPUI5 資源已更改時才通知瀏覽器重新整理資源。只要不改變,資源總是可以從瀏覽器的快取中獲取。
SAPUI5 支援 Java 和 ABAP 伺服器以及 SAP Business Technology Platform 的 cache buster
概念。
SAP HANA XS 不支援 cache buster
概念。
如果要永久快取資源,只需將 SAPUI5 引導標記中的 URL 從 resources/sap-ui-core.js 更改為 resources/sap-ui-cachebuster/sap-ui-core.js。
cache buster
允許始終將 SAPUI5 資源放入瀏覽器快取,直到 UI 庫或 Web 應用程式發生更改。 SAPUI5 資源處理程式的預設行為是將資源快取特定的時間量,或者在開發模式下使用 304/NOT MODIFIED 機制檢查 SAPUI5 資源是否是最新的。這兩種機制在最終的生產場景中都不是最優的——這就是實現 cache buster
的原因。 想要使用 cache buster
的應用程式必須明確決定使用它。
cache buster
是資源 servlet 的一部分。 一般來說,對 JavaScript 資源的請求可以透過 cache buster
來處理。 通常這用於引導 JavaScript 的初始請求:
<script type="text/javascript"
id="sap-ui-bootstrap"
src="resources/sap-ui-cachebuster/sap-ui-core.js"
data-sap-ui-libs="sap.ui.core,sap.m,sap.ui.table"
data-sap-ui-theme="sap_belize"></script>
引導 JavaScript 將透過 URL resources/sap-ui-cachebuster/sap-ui-core.js 而不是 resources/sap-ui-core.js 包含。
更多Jerry的原創文章,盡在:"汪子熙":