離線優先

由於網際網路連線可能很麻煩或不存在,因此您需要考慮優先離線: 編寫應用程式,過程就像沒有網際網路連線一樣。應用程式可離線運作後, 確保應用程式在上線時 所需的網路功能請繼續閱讀,瞭解有哪些訣竅 就能實作支援離線運作的應用程式

總覽

Chrome 應用程式可免費享有下列服務:

  • 應用程式的檔案,包括所有 JavaScript、CSS 和字型,以及所需的其他資源 (例如 圖片)—已經下載
  • 您的應用程式可以使用 Chrome Storage API 儲存及選擇同步處理少量資料。
  • 應用程式會監聽線上和離線事件偵測連線能力變化

不過,上述功能還不足以保證應用程式可以離線運作。你已啟用離線功能 應用程式應符合下列規則:

盡可能使用本機資料。
使用網際網路資源時,請透過 XMLHttpRequest 取得並儲存資料 本機儲存空間你可以使用 Chrome Storage API、IndexedDB 或 Filesystem API 將資料儲存在本機。
將應用程式 UI 與資料分開。
區隔使用者介面和資料不僅有助於改善應用程式設計,還能簡化啟用工作 也能讓您以其他方式檢視使用者的資料。MVC 架構能 可分開存放 UI 和資料。
假設您可隨時關閉應用程式。
儲存應用程式狀態 (如果可以儲存在本機和遠端),方便使用者隨時隨地聆聽 留下的印象
仔細測試應用程式。
確保應用程式在常見和困難情境下都能正常運作。

安全性限制

Chrome 應用程式無法放置資源:

  • 本機資料會顯示在使用者的電腦上,且無法安全地加密,因此機密資訊 資料就必須保留在伺服器上。舉例來說,請勿將密碼或信用卡號碼儲存在本機。
  • 應用程式執行的所有 JavaScript 必須位於應用程式的套件中。但無法內嵌。
  • 所有「CSS 樣式」、「圖片」和「字型」一開始都可以位於應用程式的套件中 封鎖網址如果是遠端資源,就無法在 HTML 中指定。請改為取得 資料使用 XMLHttpRequest (請參閱「參照外部資源」)。然後參照 儲存資料,或是 (較適合) 儲存,然後使用 Filesystem API 載入資料。

不過,您可以載入來自外部網站的大型媒體資源,例如影片和音訊。一 這項例外狀況的原因是 <video><audio> 元素具有良好的備用選項 應用程式連線能力受限或離線時的行為。另一個原因是 含有 XMLHttpRequest 和 blob 網址的媒體目前不允許串流或部分緩衝。

如要提供採用沙箱機制的 iframe,您可以建立 <webview> 標記。內容可以是遠端內容,但 無法直接存取 Chrome 應用程式 API (請參閱嵌入外部網頁)。

Chrome 應用程式的部分限制是由內容安全政策 (CSP) 強制執行, Chrome 應用程式一律如下,不可變更:

default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' blob: data: filesystem: 'unsafe-inline';
img-src 'self' blob: data: filesystem:;
frame-src 'self' blob: data: filesystem:;
font-src 'self' blob: data: filesystem:;
media-src * data: blob: filesystem:;

指定離線_enabled

系統會假設應用程式離線運作。如果不是,您應該宣傳這一點 表示使用者離線時,啟動圖示會變暗。如要這樣做,請將 offline_enabled 設為 false 應用程式資訊清單檔案中:

{
  "name": "My app",
  ...
  "offline_enabled": false,
  ...
}

將資料儲存在本機

下表列出在本機儲存資料的選項 (另請參閱管理資料)。

API最適用情況附註
Chrome Storage API少量字串資料非常適合設定和狀態。輕鬆地從遠端同步 (但非必要)。因配額限製而不適合儲存大量資料。
IndexedDB API結構化資料快速搜尋資料。使用 unlimitedStorage 權限
檔案系統 API其他提供可儲存檔案的沙箱區域。使用 unlimitedStorage 權限

從遠端儲存資料

一般來說,您可以自行決定如何從遠端儲存資料,但有些架構和 API 仍可以提供協助 (請參閱 MVC 的「MVC」一節 架構)。如果使用 Chrome Storage API,系統會自動列出所有可同步處理的資料。 當應用程式上線且使用者登入 Chrome 時,系統就會同步處理。如果使用者未登入, 在登入狀態下,系統會提示使用者登入帳戶。但請注意,如果使用者已同步的資料會遭到刪除 會解除安裝應用程式{QUESTION: true?}

建議儲存使用者讓使用者資料在解除安裝應用程式後至少 30 天 提供良好的使用體驗。

將 UI 與資料區隔開來

使用 MVC 架構可協助您設計及實作應用程式,讓應用程式具備完整的資料 和應用程式的資料檢視畫面做出區隔如需 MVC 架構清單,請參閱「MVC 架構」。

如果您的應用程式與自訂伺服器通訊,伺服器應提供您資料,而非 HTML 區塊。深思熟慮 完整執行 REST 樣式

將資料與應用程式區隔後,就能更輕鬆地提供資料的不同檢視方式。 舉例來說,您可以提供任何公開資料的網站資料檢視。您不僅可以使用網站資料檢視 可讓搜尋引擎找到資料。

測試

確保應用程式在以下情況下能正常運作:

  • 應用程式安裝完成後,隨即離線。換句話說,應用程式首次使用的應用程式 離線。
  • 應用程式已安裝在某部電腦上,然後再同步到另一台電腦。
  • 應用程式解除安裝後,會立即重新安裝。
  • 應用程式同時在兩部電腦上,以同一個設定檔執行。應用程式必須能正常運作 表示某部電腦離線時,使用者會在那台電腦上執行許多作業, 電腦恢復連線後
  • 應用程式的連線不穩,經常會在線上和離線之間切換。

此外,請確認應用程式不會將使用者機密資料 (例如密碼) 儲存在使用者的 這類機制更為快速