angular - Firebase v9 在移动设备上加载大型 iframe.js (263K)
问题描述
将 Firebase 从 V8 升级到 V9 后,仅在移动版本上,有一个 IFRAME从https://[Firebase projectId].firebaseapp.com/__/auth/iframe.js加载一个巨大的 javascript 文件( 263K ) (见下图):
到目前为止,我发现的唯一线索是它可能与本论坛中提到的 chrome 中的第三方 cookie 限制有关:https ://groups.google.com/g/firebase-talk/c/TC1xTPG85EI 。
我没有在 Chrome 中使用任何 cookie 限制,因为基于此处的设置允许所有 cookie:chrome://settings/cookies?search=cookies
此外,我已禁用安全浏览增强保护并在此处将其设置为无保护(不推荐):chrome://settings/security?search=cookies
但 iframe.js 仍在移动模式下加载。
我在这里使用带有版本 9 模块化(不兼容)代码片段的firebase@9.0.0-beta.8库: https ://firebase.google.com/docs/web/modular-upgrade 。
任何关于摆脱这个巨大的 iframe.js 文件的想法或线索将不胜感激。尽管该库是 BETA,但其他一切都可以通过 tree-shaking 来按预期工作,从而大大减少了客户端包的大小。
您可以在我的个人网站上使用 Lighthouse 进行测试: https ://guydumais.digital
先谢谢了,再见!
解决方案
我们也有这个问题很长一段时间,我最近才发现这个链接 https://firebase.google.com/docs/auth/web/custom-dependencies
在移动浏览器上,该库会自动为您的 Auth 域抢先打开 iframe。这样做是为了让大多数用户获得无缝体验,但它会在应用程序启动时加载额外的代码来影响性能。可以通过利用 initializeAuth() 并手动将 browserPopupRedirectResolver 依赖项传递给需要它的函数来避免这种行为
import {initializeAuth, browserLocalPersistence, browserPopupRedirectResolver, indexedDBLocalPersistence, signInWithRedirect, GoogleAuthProvider} from "firebase/auth";
import {initializeApp} from "firebase/app";
const app = initializeApp({/** Your app config */});
const auth = initializeAuth(app, {
persistence: [indexedDBLocalPersistence, browserLocalPersistence],
});
// Later
signInWithRedirect(auth, new GoogleAuthProvider(), browserPopupRedirectResolver);
推荐阅读
- python - Python Matplotlib:如何在箱线图上指定“中线”“四分位线”和“最小/最大”线的位置?
- java - Java 11 在运行时添加依赖 jar 的问题
- swift - 当我构建和运行 uicollection 视图时,我的图片不会显示
- python - Discord 使用命令无法正常工作
- excel - 需要修改这个基于另一个单元格内容显示数据的公式
- assembly - 什么是 AArch64 中的代码重定位,它们与动态链接的重定位相同吗?
- matlab - 用于 lsqnonlin 和外部函数的 matlab RANSAC
- ios - 使用其父 xib 的 UICollectionViewCell 子类
- javascript - 使用 reactstrap 从 react-hook-form 访问错误
- matplotlib - seaborn lineplot:图例中缺少标记符号