我怎么知道为什么我的网站使用 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 可能是罪魁祸首。这是我要尝试的:

  1. 使用 chrome://settings/cookies 并删除您网站的存储空间
  2. 确定您网站中导致写入数据的页面
  3. 在加载任何其他脚本之前修改页面以具有内联脚本,这会使用虚拟函数填充存储 API,例如:

    window.indexedDB.open = 函数() { 抛出错误('Indexed DB'); }; window.localStorage.setItem = 函数() { 抛出错误('DOM Storage'); };
  4. 在打开开发者控制台的情况下重新加载页面。如果幸运的话,您会看到异常抛出,堆栈跟踪指向尝试使用这些函数的代码。

  5. 如果不是,请将那些 throw 行更改为简单的 debugger; 以调用调试器,然后重新加载页面。调试器中的调用堆栈应该会显示哪个库正在使用存储 API。