我怎么知道为什么我的网站使用 LocalStorage 和 IndexedDb)?
How can I tell why my website uses LocalStorage and IndexedDb)?
当我使用 Google Chrome 访问我的网站时,Chrome 显示(在 "Cookies and Site Data" 中)它正在使用 LocalStorage 和 IndexedDB。我不是故意这样做的,我想知道为什么这些会出现在列表中。
该网站确实使用了一些第 3 方的东西,特别是(可能)Google Universal Analytics 和 Google 标签管理器,但我检查了这两个的 JS 源代码(包括文件即时下载),并且找不到对 LocalStorage 或 IndexedDB 的明显引用(尽管阅读缩小代码并不容易)。
有什么方法可以判断哪些功能在使用这些功能?
FWIW 这是一个 ASP.NET MVC5 网站,但我怀疑这是否相关。
如果您没有执行此操作的特定代码,那么第三方 analytics/ads 可能是罪魁祸首。这是我要尝试的:
- 使用
chrome://settings/cookies
并删除您网站的存储空间
- 确定您网站中导致写入数据的页面
在加载任何其他脚本之前修改页面以具有内联脚本,这会使用虚拟函数填充存储 API,例如:
window.indexedDB.open = 函数() {
抛出错误('Indexed DB');
};
window.localStorage.setItem = 函数() {
抛出错误('DOM Storage');
};
在打开开发者控制台的情况下重新加载页面。如果幸运的话,您会看到异常抛出,堆栈跟踪指向尝试使用这些函数的代码。
- 如果不是,请将那些
throw
行更改为简单的 debugger;
以调用调试器,然后重新加载页面。调试器中的调用堆栈应该会显示哪个库正在使用存储 API。
当我使用 Google Chrome 访问我的网站时,Chrome 显示(在 "Cookies and Site Data" 中)它正在使用 LocalStorage 和 IndexedDB。我不是故意这样做的,我想知道为什么这些会出现在列表中。
该网站确实使用了一些第 3 方的东西,特别是(可能)Google Universal Analytics 和 Google 标签管理器,但我检查了这两个的 JS 源代码(包括文件即时下载),并且找不到对 LocalStorage 或 IndexedDB 的明显引用(尽管阅读缩小代码并不容易)。
有什么方法可以判断哪些功能在使用这些功能?
FWIW 这是一个 ASP.NET MVC5 网站,但我怀疑这是否相关。
如果您没有执行此操作的特定代码,那么第三方 analytics/ads 可能是罪魁祸首。这是我要尝试的:
- 使用
chrome://settings/cookies
并删除您网站的存储空间 - 确定您网站中导致写入数据的页面
在加载任何其他脚本之前修改页面以具有内联脚本,这会使用虚拟函数填充存储 API,例如:
window.indexedDB.open = 函数() { 抛出错误('Indexed DB'); }; window.localStorage.setItem = 函数() { 抛出错误('DOM Storage'); };在打开开发者控制台的情况下重新加载页面。如果幸运的话,您会看到异常抛出,堆栈跟踪指向尝试使用这些函数的代码。
- 如果不是,请将那些
throw
行更改为简单的debugger;
以调用调试器,然后重新加载页面。调试器中的调用堆栈应该会显示哪个库正在使用存储 API。