浏览器配置文件中的内存与存储信号
让存储配额、JavaScript 堆限制和设备内存与当前配置文件一致,避免工作节点的资源差异影响浏览器隐私。
Web 应用需要了解资源情况,才能处理大型文档、媒体内容和长时间运行的任务。其中一部分信息也会描述宿主机器。如果存储容量和内存类型与浏览器配置文件的其他部分不一致,它们就可能增加跨会话关联的风险。
BotBrowser 将三个资源类别纳入配置文件控制:存储配额、JavaScript 堆限制和设备内存。目标是在支持的宿主系统上维持连贯的浏览器身份,而不是提供一组彼此无关的固定值。
这对服务器集群尤其重要。同一个配置文件可能运行在工作站、虚拟机或容器上,同时代表相同的目标设备类型。由配置文件支持的资源策略,可以避免宿主分配直接成为浏览器身份。
为什么资源信号会影响隐私
浏览器身份由一组相关属性组成。平台、浏览器类型、屏幕类型、处理器类型、内存和存储应共同描述一个合理的设备。如果其中一项来自宿主服务器,而其他项来自所选配置文件,不一致就可能增加会话被关联的机会。
任务在不同机器之间移动时,资源值也可能变化。只要使用同一个浏览器配置文件,今天运行在小型容器、明天运行在大型工作站的作业就不应自动暴露基础设施变化。
一致性比一个全局固定值更重要。移动设备配置文件和桌面工作站配置文件不应仅因为运行在同一台服务器上就使用相同资源类型。数值需要跟随配置文件类型,并在预期的会话生命周期中保持稳定。
三类受控资源
存储配额
存储配额描述浏览器为网页内容管理的存储预算。如果完全依赖运行浏览器的机器,这个值可能反映宿主磁盘特征。
在配置文件模式下,BotBrowser 使用与当前配置文件一致的配额,而不是把宿主磁盘作为浏览器身份。会话在支持的宿主系统之间移动时,资源身份可以保持一致。
JavaScript 堆限制
JavaScript 堆限制描述浏览器运行时可用的内存预算,它应与配置文件代表的设备类型一致。轻量移动设备和高内存桌面设备自然属于不同的资源类别。
BotBrowser 可以在新会话和新上下文创建时应用配置文件支持的堆策略。生命周期时机很重要,因为运行时资源限制需要在运行时建立时确定。
设备内存
设备内存是表示设备内存类别的粗粒度浏览器信号。BotBrowser 让它与当前配置文件一致,避免高层设备类别与运行时资源策略互相冲突。
这三个值共同描述同一组资源。一起审查它们,可以避免一个配置文件声称低内存设备,却暴露明显更大的运行时预算或无关的存储类别。
配置文件、宿主和显式策略
需要可重复的隐私验证时,通常应选择配置文件支持的行为。即使底层工作节点变化,配置文件仍是预期资源身份的来源。
部分获得授权的任务需要浏览器跟随真实宿主资源。当宿主本身是测试对象,或者应用容量测试必须反映工作节点时,这种模式更合适。它应被明确选择,因为同一配置文件在不同宿主之间移动时,资源行为可能随之改变。
显式策略可以用于受控兼容性测试,其中已知资源类别是测试计划的一部分。应把它作为有记录的测试配置,而不是与配置文件其他内容脱离的单独数值。
存储配额文档 提供支持的配置方式和生命周期说明。
资源策略的范围
BotBrowser 公开记录的资源控制范围是存储配额、JavaScript 堆限制和设备内存。这三个类别应作为同一组配置文件资源来审查。
站点自身的数据系统继续遵循正常浏览器语义。应用数据库、缓存内容和持久化行为不等同于这三个配置文件资源控制。团队应把这些应用功能作为普通产品行为测试,而不是假设一个资源设置会改变所有存储子系统。
这个边界也便于排查问题。配额不一致属于配置文件资源审查;应用数据缺失或缓存问题属于站点存储生命周期审查。分开处理可以避免对配置文件控制范围作出不准确的判断。
跨宿主一致性
共享工作节点集群通常包含磁盘和内存分配不同的机器。对于同一种配置文件,配置文件模式可以让这些工作节点呈现统一的浏览器资源身份。
它支持以下运行方式:
- 配置文件可以在 Windows、macOS 和 Linux 宿主之间移动,而不采用每台宿主的资源类型。
- 无头工作节点可以与有界面复核会话使用相同的预期资源身份。
- 新建上下文可以在运行时创建时获得预期的堆策略。
- 多上下文工作节点可以让每个上下文与分配给它的配置文件保持一致。
跨宿主一致不表示每个配置文件都报告相同值,而是所选配置文件仍然是资源身份来源,不由当前工作节点决定。
实际部署选择
长期运行的配置文件
持久配置文件应在整个生命周期中保持稳定的资源策略。把配置文件迁移到不同类型的工作节点前,应先审查策略,尤其是原部署主动使用宿主行为时。
一次性测试上下文
短期质量验证任务适合使用配置文件模式,因为新的工作节点不会无意改变预期资源身份。更改堆策略后应创建新上下文,让运行时以新配置开始。
容量和兼容性测试
如果测试故意衡量宿主容量,应将这一选择与隐私验证分开记录。同一结果不能同时证明两个目标,因为前者跟随工作节点,后者跟随配置文件。
混合设备类型
同时运行移动和桌面配置文件的集群,应分别审查各个配置文件类型。为所有类型复用同一个资源设置,即使数值单独看似合理,也可能产生不必要的不一致。
防御性验证
验证应从配置和应用结果开始,不使用页面级采集脚本。
- 确认作业应使用哪种资源策略。
- 确认会话或上下文开始前,预期配置文件已经生效。
- 将存储配额、堆策略和设备内存作为一组审查。
- 运行获得授权的应用流程,观察真实的资源限制行为。
- 如果发布要求包含跨宿主一致性,应在另一台支持的宿主上重复流程。
- 记录配置文件类型、策略模式、宿主类别和应用结果。
多上下文运行时,应在每个上下文创建后分别验证。正确的进程级配置不能证明后来创建的每个上下文都使用了预期的生命周期设置。
配置文件模式的预期结果来自所选配置文件,不应把真实宿主值当成目标。宿主模式服务不同目的,应在测试记录中明确标识。
常见配置问题
单独审查每个值
存储配额可能看起来合理,但堆限制与设备内存却描述另一种设备。应把整组资源一起批准。
在运行时创建后更改堆策略
堆策略属于创建生命周期。更改后启动新会话或新上下文,让运行时使用预期限制。
混淆应用存储与配置文件资源
应用数据、缓存和持久化保持普通浏览器行为。应根据应用自身的功能要求进行测试。
让工作节点变化重新定义持久配置文件
需要一致性时,任务在不同工作节点之间移动也应保持配置文件模式。只有测试明确需要宿主行为时才选择宿主模式。
为无关设备类型使用同一策略
资源设置应与所选设备类别一致。移动、桌面和其他配置文件类型需要分别审查。
建立发布基准
选择正常使用存储和内存的授权任务,例如保存草稿、打开大型文档、加载媒体工作区或导出报告。记录 profile 类型、BotBrowser、应用版本、worker 类别、策略模式和结果。在每类目标宿主上运行基准,并把隐私一致性结果与容量测试分开保存。
在不同 worker 类别之间迁移 profile
先用测试组确认目标类别支持同一版本。基于 profile 的部署不应因为迁移而悄悄改用宿主行为。启动目标 worker 前,先停止源端持久 profile。通过迁移验证后,再扩大范围。
审查资源相关事件
先区分用户可见现象,例如保存失败、文档变慢、标签页终止或离线数据缺失。使用记录中的版本和模式复现任务。比较上一版批准组合与候选组合时,每次只改一个组件,并把宿主真实容量与 profile 策略分开判断。
保留适度证据
使用测试账号和合成文档。保存任务结果、版本和决定,不要保存秘密或浏览历史。分别指定应用、profile 和基础设施负责人,因为三者批准的是部署中的不同问题。
审查长时间任务
加入一个能够创建普通应用数据、切换页面并释放临时资源的长时间任务。确认流程始终可用,最终结果符合批准的 profile 类型。worker 的真实资源压力应单独记录,不能与浏览器对外资源策略混为一个结论。
在服务重启和应用正常清理后重复任务。仅在全新镜像上成功,可能说明应用残留数据存在运行问题。使用专用测试账号和合成内容,避免发布证据包含个人数据。
处理 worker 替换
新 worker 返回资源池前,应安装同一组批准的浏览器、profile、服务和应用组合,并先运行短基准。即使物理磁盘和内存分配不同,替换 worker 也应完成相同用户流程。
故障 worker 在应用数据完成审查前不能接受新任务。替换过程不能静默迁移未完成数据或复用状态未知的目录,应遵循应用既有的恢复、保留和删除策略。
定义发布与回退决定
测试前写明验收规则。候选版本要完成代表性任务,保持批准的 profile 策略,符合宿主容量预算,并在重启后正常恢复。每项结果都要记录批准负责人。
回退需要恢复上一组完整批准组合。回退后运行短基准,确认任务处理已恢复。保留候选版本证据供复核,但不要把候选组件混入已恢复的 worker 池。
常见问题
配置文件模式会暴露工作节点磁盘大小吗?
配置文件模式使用当前配置文件提供公开记录的存储配额值,不把工作节点作为浏览器资源身份。
存储配额等同于应用数据吗?
不等同。存储配额是由配置文件控制的资源值。应用数据库、缓存内容和持久化属于应用与浏览器存储问题。
堆策略何时生效?
应在相关会话或上下文创建前应用策略。更改后启动新的运行时。
设备内存需要单独审查吗?
应与存储配额和堆策略一起审查,三个值要支持同一种设备类型。
部署可以使用真实宿主资源吗?
可以,但这必须是明确的测试目标。工作负载迁移到另一台宿主后结果可能变化,因此要记录所选模式。
在哪里查看具体设置?
请参阅内存与存储文档,了解配置和生命周期细节。配置文件管理指南 介绍更完整的配置文件流程。
内存与存储保护应作为一项连贯的配置文件策略使用。保持存储配额、JavaScript 堆限制和设备内存一致,在运行时创建前应用生命周期变化,并将应用存储作为独立功能进行测试。