管理Cookie及數(shù)據(jù)存儲

2024-02-16 13:41 更新

Cookie管理

Cookie是網(wǎng)絡訪問過程中,由服務端發(fā)送給客戶端的一小段數(shù)據(jù)。客戶端可持有該數(shù)據(jù),并在后續(xù)訪問該服務端時,方便服務端快速對客戶端身份、狀態(tài)等進行識別。

Web組件提供了WebCookieManager類,用于管理Web組件的Cookie信息。Cookie信息保存在應用沙箱路徑下/proc/{pid}/root/data/storage/el2/base/cache/web/Cookiesd的文件中。

下面以setCookie()接口舉例,為“www.example.com”設置單個Cookie的值“value=test”。其他Cookie的相關功能及使用,請參考WebCookieManager()接口文檔。

  1. // xxx.ets
  2. import web_webview from '@ohos.web.webview';
  3. @Entry
  4. @Component
  5. struct WebComponent {
  6. controller: web_webview.WebviewController = new web_webview.WebviewController();
  7. build() {
  8. Column() {
  9. Button('setCookie')
  10. .onClick(() => {
  11. try {
  12. web_webview.WebCookieManager.setCookie('https://www.example.com', 'value=test');
  13. } catch (error) {
  14. console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
  15. }
  16. })
  17. Web({ src: 'www.example.com', controller: this.controller })
  18. }
  19. }
  20. }

緩存與存儲管理

在訪問網(wǎng)站時,網(wǎng)絡資源請求是相對比較耗時的。開發(fā)者可以通過Cache、Dom Storage等手段將資源保持至本地,以提升訪問同一網(wǎng)站的速度。

Cache

使用cacheMode()配置頁面資源的緩存模式,Web組件為開發(fā)者提供四種緩存模式,分別為:

  • Default : 優(yōu)先使用未過期的緩存,如果緩存不存在,則從網(wǎng)絡獲取。
  • None : 加載資源使用cache,如果cache中無該資源則從網(wǎng)絡中獲取。
  • Online : 加載資源不使用cache,全部從網(wǎng)絡中獲取。
  • Only :只從cache中加載資源。

在下面的示例中,選用緩存設置為None模式。

  1. // xxx.ets
  2. import web_webview from '@ohos.web.webview';
  3. @Entry
  4. @Component
  5. struct WebComponent {
  6. @State mode: CacheMode = CacheMode.None;
  7. controller: web_webview.WebviewController = new web_webview.WebviewController();
  8. build() {
  9. Column() {
  10. Web({ src: 'www.example.com', controller: this.controller })
  11. .cacheMode(this.mode)
  12. }
  13. }
  14. }
同時,為了獲取最新資源,開發(fā)者可以通過removeCache()接口清除已經(jīng)緩存的資源,示例代碼如下:
  1. // xxx.ets
  2. import web_webview from '@ohos.web.webview';
  3. @Entry
  4. @Component
  5. struct WebComponent {
  6. @State mode: CacheMode = CacheMode.None;
  7. controller: web_webview.WebviewController = new web_webview.WebviewController();
  8. build() {
  9. Column() {
  10. Button('removeCache')
  11. .onClick(() => {
  12. try {
  13. // 設置為true時同時清除rom和ram中的緩存,設置為false時只清除ram中的緩存
  14. this.controller.removeCache(true);
  15. } catch (error) {
  16. console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
  17. }
  18. })
  19. Web({ src: 'www.example.com', controller: this.controller })
  20. .cacheMode(this.mode)
  21. }
  22. }
  23. }

Dom Storage

Dom Storage包含了Session Storage和Local Storage兩類。前者為臨時數(shù)據(jù),其存儲與釋放跟隨會話生命周期;后者為可持久化數(shù)據(jù),落盤在應用目錄下。兩者的數(shù)據(jù)均通過Key-Value的形式存儲,通常在訪問需要客戶端存儲的頁面時使用。開發(fā)者可以通過Web組件的屬性接口domStorageAccess()進行使能配置,示例如下:

  1. // xxx.ets
  2. import web_webview from '@ohos.web.webview';
  3. @Entry
  4. @Component
  5. struct WebComponent {
  6. controller: web_webview.WebviewController = new web_webview.WebviewController();
  7. build() {
  8. Column() {
  9. Web({ src: 'www.example.com', controller: this.controller })
  10. .domStorageAccess(true)
  11. }
  12. }
  13. }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號