介绍谷歌开发工具中的 Application 面板

在现代 Web 开发中,浏览器开发工具(DevTools)是开发者的利器。谷歌 Chrome 的开发者工具提供了丰富的功能,帮助开发者调试、优化和分析他们的 Web 应用程序。本文将深入介绍 DevTools 中的 “Application” 面板,帮助你更好地理解和利用这一强大的工具。

什么是 Application 面板?

Application 面板是 Chrome DevTools 中的一个重要部分,用于管理和调试 Web 应用的客户端存储、服务工作线程(Service Workers)、缓存、Cookie 等。它为开发者提供了对浏览器存储和后台服务的全面控制和洞察。

Application 面板的主要功能
  1. Manifest

    • 用途: 用于查看和调试应用的 Web App Manifest 文件。
    • 功能: 显示应用的基本信息,如名称、图标、启动 URL 等,有助于确保你的 PWA(渐进式 Web 应用)配置正确。
    • 示例:
      {"name": "My PWA","short_name": "PWA","start_url": "/index.html","display": "standalone","background_color": "#ffffff","description": "My Progressive Web Application","icons": [{"src": "/images/icon-192x192.png","sizes": "192x192","type": "image/png"}]
      }
      
  2. Service Workers

    • 用途: 用于管理和调试 Service Workers。
    • 功能: 可以查看已注册的 Service Workers,控制它们的生命周期(如激活、更新等),并监控它们的活动和日志。
    • 示例:
      // 注册 Service Worker
      if ('serviceWorker' in navigator) {navigator.serviceWorker.register('/service-worker.js').then(function(registration) {console.log('Service Worker 注册成功:', registration);}).catch(function(error) {console.log('Service Worker 注册失败:', error);});
      }
      
  3. Cache Storage

    • 用途: 查看和管理 Cache API 存储的数据。
    • 功能: 可以查看缓存的资源,删除不需要的缓存条目,帮助调试离线功能。
    • 示例:
      // 在 Service Worker 中缓存资源
      self.addEventListener('install', function(event) {event.waitUntil(caches.open('my-cache').then(function(cache) {return cache.addAll(['/index.html','/styles.css','/script.js','/image.png']);}));
      });// 从缓存中读取资源
      self.addEventListener('fetch', function(event) {event.respondWith(caches.match(event.request).then(function(response) {return response || fetch(event.request);}));
      });
      
  4. IndexedDB

    • 用途: 管理和调试 IndexedDB 数据库。
    • 功能: 查看和操作存储在 IndexedDB 中的数据表和记录,适用于需要在客户端存储大量结构化数据的场景。
    • 示例:
      // 打开或创建一个名为 "myDatabase" 的数据库,并指定版本号为 1
      var request = indexedDB.open("myDatabase", 1);request.onupgradeneeded = function(event) {var db = event.target.result;var objectStore = db.createObjectStore("customers", { keyPath: "id" });objectStore.createIndex("name", "name", { unique: false });
      };request.onsuccess = function(event) {var db = event.target.result;var transaction = db.transaction(["customers"], "readwrite");var objectStore = transaction.objectStore("customers");var customer = { id: 1, name: "John Doe", email: "john@example.com" };objectStore.add(customer).onsuccess = function(event) {console.log("客户信息已添加到数据库");};
      };request.onerror = function(event) {console.error("打开数据库失败:" + event.target.errorCode);
      };
      
  5. Local Storage 和 Session Storage

    • 用途: 查看和管理 Local Storage 和 Session Storage 中的数据。
    • 功能: 可以查看、添加、修改和删除存储的数据键值对。Local Storage 持久化存储,Session Storage 在会话结束后清除。
    • 示例:
      // 使用 Local Storage
      localStorage.setItem('username', 'JohnDoe');
      var username = localStorage.getItem('username');
      console.log(username); // 输出: JohnDoe// 使用 Session Storage
      sessionStorage.setItem('sessionID', '123456');
      var sessionID = sessionStorage.getItem('sessionID');
      console.log(sessionID); // 输出: 123456
      
  6. Cookies

    • 用途: 查看和管理 Cookie。
    • 功能: 可以查看 Cookie 的详细信息(如名称、值、域、路径、过期时间等),添加和删除 Cookie,并模拟不同的用户会话。
    • 示例:
      // 设置 Cookie
      document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";// 读取 Cookie
      function getCookie(name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for (var i = 0; i < ca.length; i++) {var c = ca[i];while (c.charAt(0) === ' ') c = c.substring(1, c.length);if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);}return null;
      }var username = getCookie("username");
      console.log(username); // 输出: JohnDoe
      
  7. Background Services

    • 用途: 模拟和调试一些后台服务,如 Push 消息、Background Sync 等。
    • 功能: 允许开发者测试应用的推送通知、后台同步等功能,以确保它们在实际应用中的正确性和稳定性。
    • 示例:
      // 注册 Push 通知
      navigator.serviceWorker.ready.then(function(registration) {return registration.pushManager.subscribe({ userVisibleOnly: true });
      }).then(function(subscription) {console.log('Push 订阅:', subscription);
      }).catch(function(error) {console.error('Push 订阅失败:', error);
      });// Background Sync 示例
      navigator.serviceWorker.ready.then(function(registration) {return registration.sync.register('mySyncEvent');
      }).then(function() {console.log('Background Sync 已注册');
      }).catch(function(error) {console.error('Background Sync 注册失败:', error);
      });
      
Cookie 在会话中的作用

当客户端与服务器建立会话时,客户端会将相关的 Cookie 一起发送到服务器。这使得服务器能够识别客户端的身份,并维护会话状态。Cookie 是服务器发送到客户端并存储在本地的文本数据,用于跟踪用户会话、身份验证等。当客户端发送 HTTP 请求时,浏览器会自动将相关的 Cookie 附加到请求中。

客户端与服务器端的 Session 区别

客户端的 Session Storage 与服务器端的 Session 不同。客户端的 Session Storage 是浏览器提供的一种存储机制,用于在客户端保存临时数据。而服务器端的 Session 是在服务器上维护的一种会话状态,通常通过 Session ID 来识别。服务器端的 Session 更安全,但需要服务器资源;客户端的 Session Storage 可以减轻服务器负担,但相对不安全。

结束语

Chrome DevTools 中的 Application 面板提供了一套全面的工具,用于管理和调试 Web 应用的存储和后台服务。熟练使用这些工具,可以极大地提高开发效率,确保应用在各个场景下都能正常工作。无论是缓存策略、离线功能,还是推送通知、会话管理,Application 面板都能为你提供强有力的支持。希望本文能帮助你更好地理解和使用这些功能,使你的 Web 开发工作更加高效和顺利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark SQL数据源 - Parquet文件

当使用Spark SQL处理Parquet文件时&#xff0c;你可以使用spark.read.parquet()方法从文件系统中加载Parquet数据到一个DataFrame中。Parquet是一种列式存储格式&#xff0c;非常适合用于大数据集&#xff0c;因为它提供了高效的压缩和编码方案。 以下是一个简单的例子&#x…

prometheus的rules配置

说明&#xff1a;本文介绍prometheus中的规则配置&#xff1b; 规则说明 groups:- name: MySQLAlertsrules:- alert: MysqlDownexpr: mysql_up 0for: 0mlabels:severity: criticalannotations:summary: MySQL down (实例&#xff1a;{{ $labels.instance }})description: &q…

VMware Workstation中WinXP联网问题

我一直以为我的虚拟机上的XP没有联网 因为 蒙了半天&#xff0c;发现是因为这个网址打不开&#xff0c;不是没有网 太傻了 不如在cmd命令行中通过ping baidu.com来判断是否联网

JavaScript中对象的增删改查

1. 增&#xff08;添加属性&#xff09; let obj {}; // 添加一个属性 obj.name John Doe; // 或者使用方括号语法添加属性&#xff08;这对于动态属性名很有用&#xff09; let propName age; obj[propName] 30; console.log(obj); // 输出: { name: John Doe, …

【康耐视国产案例】Nvidia/算能+智能AI相机:用AI驱动 | 降低电动车成本的未来之路

受环保观念影响、政府激励措施推动与新能源技术的发展&#xff0c;消费者对电动汽车(EV)的需求正在不断增长&#xff0c;电动汽车已经成为了未来出行方式的重要组成部分。然而&#xff0c;电动汽车大规模取代燃油汽车的道路还很漫长。最大的障碍就是电动汽车的售价相对过高。尽…

【Python面试50题】

1. **基础概念** 1. Python 是解释型还是编译型语言&#xff1f; 2. 什么是 Python 的 GIL&#xff08;全局解释器锁&#xff09;&#xff1f; 3. 如何理解 Python 中的可变与不可变数据类型&#xff1f; 4. 解释一下 Python 中的 pass 语句。 5. Python 中的列…

基于昇腾910B训练万亿参数的语言模型简介

基于昇腾910B训练万亿参数的语言模型 Abstract 在本工作中&#xff0c;作者开发了一个系统&#xff0c;该系统在Ascend 910 AI处理器集群和MindSpore框架上训练了一个万亿参数的语言模型&#xff0c;并提出了一个含有1.085T参数的语言模型&#xff0c;名为PanGu-。 从PanGu-[…

3.基础光照

从宏观上讲渲染包含了两大部分&#xff1a;决定一个像素的可见性&#xff0c;决定一个像素的光照计算 而光照模型就是用于决定在一个像素上决定怎样的渲染光照计算。 一、我们是如何看到这个世界的 1.光源 实时渲染中&#xff0c;我们通常把光源当成一个没有体积的点&#…

远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境

文章目录 参考文献 创建环境在(zgp_m3dm)中安装会显示zgp_m3dm_main环境中的情况满足(base) ~/zgp/M3DM-repetition conda deactivate 再次安装如果服务器本身不能联网&#xff0c;需下载pysocks包以设置反向代理&#xff08;具体可参考之前的笔记10&#xff09;&#xff1a; 再…

简易版本的QFD质量屋

比如餐馆要考虑什么因素最重要&#xff0c;这里列出好吃&#xff0c;快速&#xff0c;便宜三类问题&#xff0c;然后设置上图的权重&#xff0c; 然后设置9&#xff0c;3&#xff0c;1三类因子&#xff0c;9比如是最重要的&#xff0c;3&#xff0c;1&#xff0c;依次没那么重要…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的初始化

Supermap参考教程 天地图 一、安装 1、终端:npm install supermap/vue-iclient-mapboxgl 2、在package.json文件的dependencies查看supermap/vue-iclient-mapboxgl依赖是否安装成功。 3、在mian.js全局引入 import VueiClient from supermap/vue-iclient-mapboxgl; Vue.use(…

stm32和nrf24L01病房呼叫系统的实现

stm32和nrf24L01病房呼叫系统的实现 文章目录 stm32和nrf24L01病房呼叫系统的实现第一章 项目背景与意义第一节 病房呼叫系统的现状1.技术现状2.存在的问题 第二节 STM32F1、nRF24L01、OLED技术介绍1.STM32F1技术介绍2.nRF24L01技术介绍3.OLED技术介绍 第三节 项目目标与预期成…

牛客网刷题 | BC106 K形图案

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi学习了循环&am…

Java 基础面试300题 (201-230)

Java 基础面试300题 &#xff08;201-230&#xff09; 201.下面代码片段的输出是什么&#xff1f; Predicate<Integer> numberChecker (num)–> num > 20; int input 10; System.out.println(input” greater than 20–”numberChecker.test(input)); //Line 1…

perl: URI::rtsp 是用来处理RTSP协议的的URI的模块。

在Perl中&#xff0c;URI::rtsp 是用来处理RTSP&#xff08;Real Time Streaming Protocol&#xff0c;实时流协议&#xff09;的URI的模块。 以下是一些使用 URI::rtsp 的方法&#xff1a; 1.创建一个RTSP URI use URI::rtsp;my $uri URI::rtsp->new("rtsp://user…

WPS部分快捷操作汇总

记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接&#xff1a; 1、用WPS打开文档&#xff1b; 2、用Ctrla全选&#xff0c;或者点击上方的【选择】-【全选】&#xff0c;选中文档全部内容&#xff1b; 3、按CTRLSHIFTF9组合键&#xff0c;即可一次性将取文档中所有…

AI学习指南机器学习篇-线性回归统计推断

AI学习指南机器学习篇-线性回归统计推断 在机器学习领域&#xff0c;线性回归模型是最为常见且基础的模型之一。而统计推断则是为了更好地理解数据背后的规律而产生的一门重要学科。本文将探讨线性回归模型与统计推断的关系&#xff0c;重点讨论参数估计的置信区间和假设检验。…

Linux的程序管理2:设置优先级,程序的查看与处理---ps命令详解与kill,killall,top,renice,nice搭配使用管理linux

前言 程序的管理除了前文说到的前后台执行&#xff0c;离线执行。还包括下面几个方面&#xff1a; 1&#xff1a;如何找到最耗费系统资源的程序&#xff1f; &#xff08;使用top命令找到PID然后排查原因&#xff09; 2&#xff1a;设置程序的优先级&#xff0c;让其被执行的概…

Leetcode 第 397 场周赛题解

Leetcode 第 397 场周赛题解 Leetcode 第 397 场周赛题解题目1&#xff1a;3146. 两个字符串的排列差思路代码复杂度分析 题目2&#xff1a;思路代码复杂度分析 题目3&#xff1a;3148. 矩阵中的最大得分思路代码复杂度分析 题目4&#xff1a;3149. 找出分数最低的排列思路代码…

“论软件的可靠性评价”必过范文,突击2024软考高项论文

论文部分 摘要 2023年03月&#xff0c;我参与了某艺术品公司线上拍卖管理平台的研发。该项目的目标是建立一个互联网在线拍卖平台&#xff0c;用户可以通过手机或PC浏览器进入拍卖平台&#xff0c;对喜欢的拍品进行参拍出价。平台提供了在线支付、在线出价、保证金管理、拍品…