首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙HarmonyOS实战-Web组件(Cookie及数据存储)

  • 25-02-22 03:41
  • 4558
  • 13444
blog.csdn.net

 前言

Cookie是一种存储在用户计算机上的小文本文件,用于在用户访问网站时存储和提取信息。它由网站服务器发送到用户的浏览器,并存储在用户的计算机上。每当用户访问该网站时,浏览器将发送该Cookie回服务器,以用于识别用户和存储用户的首选项和其他信息。

Cookie可以用于跟踪用户的行为,例如记录用户的浏览历史、购物车内容等。它可以存储用户的登录凭据,以便用户在下次访问网站时自动登录。Cookie还可以用于在会话之间存储临时数据,例如存储用户在网页表单中输入的数据。

除了Cookie,还有其他数据存储方式可供使用,例如Web Storage和IndexedDB。Web Storage是HTML5中引入的一种简单存储方案,可以在用户浏览器中存储键值对。IndexedDB是一种更复杂和功能更强大的浏览器数据库,可以用于存储结构化数据。这些数据存储方式可以提供更大的存储容量和更灵活的数据操作功能,但使用它们可能需要更多的编程工作。

一、Cookie及数据存储

1.Cookie管理

  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. @State message: string = 'Hello World';
  8. build() {
  9. Column() {
  10. Button('setCookie')
  11. .onClick(() => {
  12. try {
  13. web_webview.WebCookieManager.setCookie('https://www.example.com', 'value=test');
  14. } catch (error) {
  15. console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
  16. }
  17. })
  18. Button('getCookie')
  19. .onClick(() => {
  20. try {
  21. let Cookie=web_webview.WebCookieManager.getCookie('https://www.example.com');
  22. this.message=Cookie.toString()
  23. } catch (error) {
  24. console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
  25. }
  26. })
  27. Text(this.message)
  28. Web({ src: 'www.example.com', controller: this.controller })
  29. }
  30. }
  31. }

在这里插入图片描述

2.缓存与存储管理

?2.1 Cache

网页缓存是指浏览器或代理服务器在第一次请求某个特定网页时,将其内容存储在本地的一种机制。当再次请求相同的网页时,浏览器或代理服务器会检查本地缓存是否存在该网页的副本,并从缓存中加载网页内容,而不是重新从服务器下载。这样可以提高网页加载速度和减轻服务器的负载。

网页缓存有助于提高用户的浏览体验,因为加载缓存的网页比从服务器下载更快。此外,网页缓存也可以帮助减少网络流量,节省带宽,降低服务器的负载压力。

开发人员可以根据实际需求,控制网页缓存的过期时间和验证方式,以确保用户能够获得最新的网页内容。

缓存模式描述
Default优先使用未过期的缓存,如果缓存不存在,则从网络获取。
None加载资源使用cache,如果cache中无该资源则从网络中获取。
Online加载资源不使用cache,全部从网络中获取。
Only只从cache中加载资源。
  1. import web_webview from '@ohos.web.webview';
  2. @Entry
  3. @Component
  4. struct WebComponent {
  5. @State mode: CacheMode = CacheMode.None;
  6. controller: web_webview.WebviewController = new web_webview.WebviewController();
  7. build() {
  8. Column() {
  9. Button('removeCache')
  10. .onClick(() => {
  11. try {
  12. // 设置为true时同时清除rom和ram中的缓存,设置为false时只清除ram中的缓存
  13. this.controller.removeCache(true);
  14. } catch (error) {
  15. console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
  16. }
  17. })
  18. Web({ src: 'www.example.com', controller: this.controller })
  19. .cacheMode(this.mode)
  20. }
  21. }
  22. }

?2.2 Dom Storage

Dom Storage是一种在Web浏览器中用于存储和检索数据的机制。它包含两种不同的存储类型:Session Storage和Local Storage。

Session Storage用于临时存储数据,其生命周期与浏览器会话相关联。当用户关闭浏览器标签或窗口时,Session Storage中的数据将被释放。Session Storage适用于在网页会话期间保存临时数据。

Local Storage用于持久化存储数据,即数据会保留在客户端,即使用户关闭浏览器也不会被删除。Local Storage的数据存储在应用目录下,可以在客户端之间共享。Local Storage适用于需要长期保存数据的场景。

无论是Session Storage还是Local Storage,数据都以Key-Value的形式存储。可以通过指定键来存储和检索数据。通常在需要在客户端存储数据的网页中使用Dom Storage。

使用Dom Storage,开发人员可以轻松地在浏览器中存储和获取数据,而无需使用服务器端的数据库或其他存储机制。这使得网页能够在离线状态下运行,并且可以更快地加载和呈现数据。

  1. import web_webview from '@ohos.web.webview';
  2. @Entry
  3. @Component
  4. struct WebComponent {
  5. controller: web_webview.WebviewController = new web_webview.WebviewController();
  6. build() {
  7. Column() {
  8. Web({ src: 'www.example.com', controller: this.controller })
  9. .domStorageAccess(true)
  10. }
  11. }
  12. }

 ?写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新VIP学习资料,请点击→全套鸿蒙HarmonyOS学习资料
  • 或者关注小编后私信回复【666】也可获取资料哦~~

注:本文转载自blog.csdn.net的蜀道山QAQ的文章"https://blog.csdn.net/shudaoshanQAQ/article/details/135501623"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top