0

我有一个很大的数据库,所以我决定在我的 Store 的前端创建一个这个数据库的副本(我使用 Vuex 和 Vuejs),即数据库中的每个表在 Store 中都有一个对应的数组,并且每个当我有更新时,我将它同时保存到真实数据库和我的副本(存在于 Store 中),以避免在每次更新后再次获取数据。这是一个好主意还是不是(就性能而言)?

4

1 回答 1

1

我认为在客户端创建数据缓存完全没问题,甚至建议这样做。但是你确实需要注意一些事情:

  1. 确保仅在数据已成功保存在数据库中时才更新客户端。所以客户不会看到虚假信息。

  2. 如果您有多个可以更改数据的用户,并且您需要实时使用数据 - 请确保您也将更新的数据发送给其他用户。

  3. 随时检查您实际需要的数据库中的哪些表——也许您在应用程序的不同视图中需要不同的表,因此您不必一直保存所有数据库。它可以帮助减少内存使用

  4. 考虑使用延迟加载,这意味着您仅在需要时加载表,然后将其保存在缓存中。下次您需要使用此表时,您不会从服务器加载它,而是使用缓存的数据。

  5. 当您将数据放入vuex存储中时,vue会认为此数据是反应式的,这可能会导致性能问题——尤其是在您有大量数据的情况下。如果你有你知道不会改变的数据,或者很少改变的数据——考虑使用Object.freeze()which 基本上告诉vue不要在这个对象上放置任何观察者。这可以帮助大大改善性能问题。

编辑:

如果您担心性能问题,我将使用延迟加载来实现缓存,Object.freeze()这意味着您将无法更改客户端中的数据-因此对于每次更改,您都应该将更新发送到服务器并接收完整的更新表中 - 因此您将使用Object.freeze(). 这样,您不必每次使用都向服务器请求表,而只需更新。这将有助于保持良好的性能。

于 2021-12-28T16:18:56.637 回答