更改 Chrome 缓存大小

更改 Chrome 缓存大小

我已将其设置HKEY_CURRENT_USER\Software\Policies\Google\Chrome\DiskCacheSize为(32 MiB)DWORD的值0x2000000,但是当我检查我的配置文件中的文件夹大小时Cache,我看到其大小为 282 MiB。

为什么会这样?是错误,还是我没有在注册表中设置正确的值?

答案1

更改 Chrome 缓存大小

缓存大小不是固定的;相反,它可以动态改变:

#28 [电子邮件保护]

默认大小在开始时计算,取决于缓存所在卷的可用磁盘空间。

我们尽量使用至少 80 [MiB],然后慢慢增加大小,直到上限约为 320 [MiB](免费 32 [GiB])。

当然,这可能会根据总体测量性能而发生变化。

来源:问题 96264 - Chromium - 实施关机时清除浏览器缓存的策略

上述行为在 版本中仍然适用35.0.1916.153。缓存大小还将决定缓存文件的最大大小,即总字节数的 1/8。任何大于此大小的文件都不会缓存在磁盘上。

Chrome 不提供通过用户界面更改其缓存大小的方法。为了覆盖默认限制,您需要使用特定的开关/标志或启用组策略设置。

在继续之前,请确保清空整个缓存,然后关闭浏览器。要检查更改是否已成功应用,您可以使用此内部页面:

chrome://net-internals/#httpCache

使用命令行开关

  1. 复制 Google Chrome 应用程序快捷方式,并将其粘贴到桌面。

  2. 右键单击粘贴的快捷方式,然后选择特性从上下文菜单中。

  3. 编辑目标字段末尾添加一个空格字符和以下开关:

    --disk-cache-size=<amount in bytes>
    

    例如,设置 32密布限制(33554432 字节)结尾部分应如下所示:

    chrome.exe --disk-cache-size=33554432
    
  4. 点击好的应用更改。每当您需要启动 Chrome 时,请使用修改后的快捷方式。

通过组策略编辑器

笔记以下步骤适用于 Windows Vista 及更高版本。仅支持 Business/Professional/Pro 或更高版本。

  1. 使用管理员帐户登录。

  2. 下载官方策略模板

  3. 打开下载档案(例如使用7-Zip)。导航到该windows文件夹​​,并将该admx文件夹解压到某处。

  4. admx文件夹包含以文化名称其中包含本地化字符串。还有一个chrome.admx文件是实际模板。将其复制到PolicyDefinitions文件夹中,该文件夹通常位于此处:

     C:\Windows\PolicyDefinitions
    

    chrome.adml然后将与系统区域设置相匹配的本地化文件复制到相应的PolicyDefinitions子文件夹中。

  5. 开始gpedit.msc

  6. 导航计算机配置 > 管理模板 > Google > Google Chrome

  7. 双击设置磁盘缓存大小(以字节为单位)设置,启用它,然后选择所需的金额。点击好的当你完成的时候。

至少是 Windows XP SP2。

配置 Google Chrome 用于在磁盘上存储缓存文件的缓存大小。

如果您设置此策略,Google Chrome 浏览器将使用提供的缓存大小,无论用户是否指定了该--disk-cache-size标志。此策略中指定的值不是硬性界限,而是对缓存系统的建议,任何低于几兆字节的值都太小,将四舍五入为合理的最小值。

如果此策略的值为0,则将使用默认缓存大小,但用户将无法更改它。

如果未设置此策略,则将使用默认大小,并且用户可以使用标志覆盖它--disk-cache-size

来源:政策列表 - Chromium 项目

附加信息

如果缓存文件夹占用的空间比报告的要多,则意味着有一些残留文件。清除它们的最简单方法是关闭浏览器,然后手动删除所有缓存文件。下次启动浏览器时将创建一个全新的缓存。

当涉及到组策略时,不支持手动编辑注册表:

注意:从 Chrome 28 开始,策略直接从 Windows 上的组策略 API 加载。手动写入注册表的策略将被忽略。请参阅http://crbug.com/259236了解详情。

从 Google Chrome 35 开始,如果工作站加入到 Active Directory 域,则直接从注册表中读取策略;否则从 GPO 中读取策略。

来源:政策列表 - Chromium 项目

这可以通过以下方式确认进程监控。无论有意还是无意,都存在一些例外情况:

HKEY_CURRENT_USER\Software\Policies\Google\Chrome\MetricsReportingEnabled
HKEY_CURRENT_USER\Software\Policies\Google\Chrome\UserDataDir
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\MetricsReportingEnabled
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\UserDataDir
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update\Update{8A69D345-D564-463c-AFF1-A69D9E530F96}
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update\UpdateDefault
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Google\Chrome\MetricsReportingEnabled
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Google\Chrome\UserDataDir
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Google\Update\Update{8A69D345-D564-463c-AFF1-A69D9E530F96}
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Google\Update\UpdateDefault

除了主 HTTP 缓存之外,Chrome 还使用其他会占用额外空间的文件夹:

可以使用开关或启用相关策略设置将媒体缓存限制为固定的字节数。您无法真正限制应用程序缓存或 GPU 着色器缓存;您只能通过开关禁用它们。其余部分无法调整。

进一步阅读


测试缓存限制

这是我在运行以下测试之前遵循的程序:

  1. 安装 Chrome。
  2. 确保存储文件夹的卷Cache有超过 32 GiB 的可用空间。
  3. 将主页设置为,about:blank以防止启动时出现脏缓存。
  4. 清除所有缓存的图片和文件刚开始的时候
  5. 关闭浏览器。

所有结果均针对34.0.1847.137在 Windows 7 SP1 x86(32 位)上运行的 Chrome 版本。每次测试前都会清空缓存,使用最新版本的 Chrome 时缓存行为没有明显差异。

批处理脚本

为了自动化测试,我创建了一个批处理脚本:

@echo off
setlocal
setlocal enabledelayedexpansion

set exePath=%localappdata%\Google\Chrome\Application

if not "%~1" == "" (
start "%~n0" /d "%exePath%" "chrome.exe" "%~1"
pause >nul
)

pushd "%~dp0"
set /a counter=1

for /f "usebackq" %%G in (`findstr /i "^https*://" "samples.txt"`) do (
echo Load sample !counter!
start "%~n0" /d "%exePath%" "chrome.exe" "%%~G"
set /a counter += 1
pause >nul
)

popd
endlocal
pause & exit /b

它只有一个参数,用于使用特定标志启动 Chrome。该脚本解析文件samples.txt,收集所有 URL 并一次打开一个。当每个示例完成加载和渲染后,按任意键加载下一个示例。可执行路径可能需要调整。

测试 A1

测试的目的是检查最大缓存大小是否是真正的界限。最快的证明方法是加载一些充满图片的网站:只要内容足够多,你就会很快达到缓存限制。

标志

没有任何

示例

http://www.tumblr.com/search/gif+1
http://www.tumblr.com/search/gif+2
http://www.tumblr.com/search/gif+3
http://www.tumblr.com/search/gif+4
http://www.tumblr.com/search/gif+5
http://www.tumblr.com/search/gif+6
http://www.tumblr.com/search/gif+7
http://www.tumblr.com/search/gif+8

结果

加载数百个文件后,缓存大小为334128469字节(约 318.65 MiB)。修剪计数器设置为0x15c,这意味着超过 300 个最旧的条目被丢弃,以便为新条目腾出空间。

Cache type: Blockfile Cache
Create error: 0x0
Create hit: 0xa8
Create miss: 0x0
Current size: 334128469
Doom cache: 0x0
Doom entry: 0x3c
Doom recent entries: 0x0
Entries: 833
Fatal error: 0x0
Get rankings: 0x0
Invalid entry: 0x0
Last report: 0x2e5b3bec502446
Last report timer: 0x0
Max entries: 0x1a
Max size: 335544320
Open entries: 0x9
Open hit: 0x34
Open miss: 0xad
Open rankings: 0x39c68
Pending IO: 0
Read data: 0x4db
Resurrect hit: 0x2
Size00: 0x0000052f
Size01: 0x00000005
Size02: 0x00000017
Size03: 0x00000014
Size04: 0x00000002
Size05: 0x00000001
Size06: 0x00000004
Size07: 0x00000005
Size08: 0x00000002
Size09: 0x00000003
Size10: 0x00000004
Size11: 0x00000009
Size12: 0x0000001a
Size13: 0x00000019
Size14: 0x00000012
Size15: 0x00000006
Size16: 0x00000020
Size17: 0x00000013
Size18: 0x00000012
Size19: 0x00000032
Size20: 0x00000074
Size21: 0x00000083
Size22: 0x00000000
Size23: 0x00000000
Size24: 0x00000000
Size25: 0x00000000
Size26: 0x00000000
Size27: 0x00000000
Timer: 0xe
Trim entry: 0x15c
Write data: 0x4c171
unused: 0x0

测试 A2

与测试 A1 类似,但有一点不同:缓存限制为 32 MiB。

标志

--disk-cache-size=33554432

示例

与测试 A1 相同。

结果

缓存总大小达到约 31.74 MiB。与测试 A1 相比,更严格的限制会生成更少的缓存条目,而丢弃的条目会更多。

Cache type: Blockfile Cache
Create error: 0x0
Create hit: 0xb6
Create miss: 0x0
Current size: 33280014
Doom cache: 0x0
Doom entry: 0x2f5
Doom recent entries: 0x0
Entries: 139
Fatal error: 0x0
Get rankings: 0x0
Invalid entry: 0x0
Last report: 0x2e5b3c19894813
Last report timer: 0x0
Max entries: 0x18
Max size: 33554432
Open entries: 0x9
Open hit: 0x4f
Open miss: 0xb9
Open rankings: 0x34e76
Pending IO: 0
Read data: 0x4d6
Resurrect hit: 0x1
Size00: 0x000000e5
Size01: 0x00000005
Size02: 0x00000010
Size03: 0x00000006
Size04: 0x00000000
Size05: 0x00000001
Size06: 0x00000003
Size07: 0x00000003
Size08: 0x00000001
Size09: 0x00000002
Size10: 0x00000002
Size11: 0x00000000
Size12: 0x00000002
Size13: 0x00000003
Size14: 0x00000001
Size15: 0x00000002
Size16: 0x00000006
Size17: 0x00000008
Size18: 0x00000002
Size19: 0x00000006
Size20: 0x00000010
Size21: 0x0000000a
Size22: 0x00000000
Size23: 0x00000000
Size24: 0x00000000
Size25: 0x00000000
Size26: 0x00000000
Size27: 0x00000000
Timer: 0xe
Trim entry: 0x2fc
Write data: 0x4239f
unused: 0x0

测试 B1

在将缓存缩小到 32 MiB 的同时,加载了五个图像样本。它们的大小范围从 16 MiB 到 1 MiB,每次减半,减去 0.5% 以考虑舍入误差。例如,要搜索 15.92 MiB 的图像,我使用了以下搜索查询:

jpeg "file size 15.92 mb" site:wikimedia.org

由于缓存设置为 32 MiB,因此每个条目限制为 4 MiB。

标志

--disk-cache-size=33554432

示例

http://upload.wikimedia.org/wikipedia/commons/b/ba/Langesund_og_Lang%C3%B8ya_01.jpg
http://upload.wikimedia.org/wikipedia/commons/9/9d/Balloons_of_Happiness.jpg
http://upload.wikimedia.org/wikipedia/commons/1/1e/Kannonzaki_01.jpg
http://upload.wikimedia.org/wikipedia/commons/5/51/Fraser_Ship_Yard_tug_boat%3B_Superior_WI_-b.jpg
http://upload.wikimedia.org/wikipedia/commons/4/46/Val%C3%A8ncia_micalet.jpg

结果

在五个样本中,只有三个真正被缓存了。

Cache type: Blockfile Cache
Create error: 0x0
Create hit: 0x5
Create miss: 0x0
Current size: 7305845
Doom cache: 0x0
Doom entry: 0x2
Doom recent entries: 0x0
Entries: 3
Fatal error: 0x0
Get rankings: 0x0
Invalid entry: 0x0
Last report: 0x2e5b3c78282e93
Last report timer: 0x0
Max entries: 0x0
Max size: 33554432
Open entries: 0x0
Open hit: 0x0
Open miss: 0x5
Open rankings: 0xa
Pending IO: 0
Read data: 0x0
Resurrect hit: 0x0
Size00: 0x00000006
Size01: 0x00000000
Size02: 0x00000000
Size03: 0x00000000
Size04: 0x00000000
Size05: 0x00000000
Size06: 0x00000000
Size07: 0x00000000
Size08: 0x00000000
Size09: 0x00000000
Size10: 0x00000000
Size11: 0x00000000
Size12: 0x00000000
Size13: 0x00000000
Size14: 0x00000000
Size15: 0x00000000
Size16: 0x00000000
Size17: 0x00000000
Size18: 0x00000000
Size19: 0x00000000
Size20: 0x00000001
Size21: 0x00000001
Size22: 0x00000001
Size23: 0x00000002
Size24: 0x00000000
Size25: 0x00000000
Size26: 0x00000000
Size27: 0x00000000
Timer: 0x1
Trim entry: 0x0
Write data: 0x1e74
unused: 0x0

测试 B2

与没有缓存调整标志的测试 B1 类似。

标志

没有任何

示例

与测试 B1 相同。

结果

与测试 B1 不同,所有五个样本都进行了缓存。缓存大小达到约 30.84 MiB,这是预期的数量。

Cache type: Blockfile Cache
Create error: 0x0
Create hit: 0x5
Create miss: 0x0
Current size: 32341906
Doom cache: 0x0
Doom entry: 0x0
Doom recent entries: 0x0
Entries: 5
Fatal error: 0x0
Get rankings: 0x0
Invalid entry: 0x0
Last report: 0x2e5b3c6aae7b97
Last report timer: 0x0
Max entries: 0x0
Max size: 335544320
Open entries: 0x0
Open hit: 0x0
Open miss: 0x5
Open rankings: 0x4
Pending IO: 0
Read data: 0x0
Resurrect hit: 0x0
Size00: 0x0000000a
Size01: 0x00000000
Size02: 0x00000000
Size03: 0x00000000
Size04: 0x00000000
Size05: 0x00000000
Size06: 0x00000000
Size07: 0x00000000
Size08: 0x00000000
Size09: 0x00000000
Size10: 0x00000000
Size11: 0x00000000
Size12: 0x00000000
Size13: 0x00000000
Size14: 0x00000000
Size15: 0x00000000
Size16: 0x00000000
Size17: 0x00000000
Size18: 0x00000000
Size19: 0x00000000
Size20: 0x00000001
Size21: 0x00000001
Size22: 0x00000001
Size23: 0x00000001
Size24: 0x00000001
Size25: 0x00000000
Size26: 0x00000000
Size27: 0x00000000
Timer: 0x1
Trim entry: 0x0
Write data: 0x2c6a
unused: 0x0

相关内容