最近加入了一个使用 Angular 和 Redux 的新项目。但它没有启用 chrome redux 开发工具。我注意到它已从 app.module.ts 部分中注释掉。所以我取消了对这部分的评论。
StoreDevToolsModule.instrument({
name: 'AppName Dev Tools",
logOnly: environment.production,
maxAge: 10
})
然后我看到了关于“过度使用内存和 CPU”的警告以及 github 文档的链接:https ://github.com/zalmoxisus/redux-devtools-extension/blob/master/docs/Troubleshooting.md#excessive-use -内存和cpu
启用 reduxDev 工具会使应用程序崩溃,没有可点击的按钮或选项卡。即使我调整maxAge
到2,它仍然很慢。如果未启用 ReduxDev 工具,则不会出现性能问题。
由于文档说“这是由于一些巨大的对象的序列化。” 然后我开始浏览应用程序,看看可能是什么。我的应用没有图片或视频。唯一可能被认为很大的 API 是返回 4.5 MB 下拉内容的端点。而且我认为它是由以前的开发人员存储的,因为此下拉内容在应用程序的多个选项卡中使用。
现在尝试根据文档部分清理上述端点:
const actionSanitizer = (action) => (
action.type === 'FILE_DOWNLOAD_SUCCESS' && action.data ?
{ ...action, data: '<<LONG_BLOB>>' } : action
);
const store = createStore(rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__({
actionSanitizer,
stateSanitizer: (state) => state.data ? { ...state, data: '<<LONG_BLOB>>' } : state
}));
我发现我们基于ngrx这个示例项目的应用程序根本没有createStore()
。
问题: 1. 鉴于我们的项目看起来像这样,我应该在哪里添加消毒剂?
- 我真的不明白大型下拉数据(树结构中的所有文本)如何难以序列化。4.5mb也算大吗?我从任务管理器中看到,启用 Redux 开发工具时,它使用了 1-2 GB 的内存。所以也许这是我不知道的其他问题?谢谢。
编辑1:
尝试了第一个答案并将状态和动作缩减器添加到 StoreDevToolsModule.instrument({}) 部分。但性能仍然相当差。MaxAge 设置为 4。我现在可以可视化整棵树。但它仍然导致 chrome 崩溃。