3

最近加入了一个使用 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. 鉴于我们的项目看起来像这样,我应该在哪里添加消毒剂?

  1. 我真的不明白大型下拉数据(树结构中的所有文本)如何难以序列化。4.5mb也算大吗?我从任务管理器中看到,启用 Redux 开发工具时,它使用了 1-2 GB 的内存。所以也许这是我不知道的其他问题?谢谢。

编辑1:

尝试了第一个答案并将状态和动作缩减器添加到 StoreDevToolsModule.instrument({}) 部分。但性能仍然相当差。MaxAge 设置为 4。我现在可以可视化整棵树。但它仍然导致 chrome 崩溃。

4

1 回答 1

3

这些可以通过配置进行StoreDevtoolsModule.instrument配置。

有关更多信息,请参阅文档

于 2020-05-04T16:34:59.857 回答