
例如,我的网络应用程序为每个用户都有一个收件箱/邮件功能.我迄今为止所做的是将典型的会话数据存储在缓存中.在此示例中,当用户登录时,我转到数据库并检索用户的邮件消息并将其存储在缓存中.我开始怀疑是否应该只在缓存中保留所有用户消息的副本,并且只在需要时从缓存中检索它们,而不是在登录时从数据库加载.我在登录时加载了一堆其他数据(产品目录和相关实体),登录开始变慢.
所以我想我对社区的问题是,在这种情况下你会做什么/建议作为一种方法?
谢谢.
解决方法 这可能更适合 https://softwareengineering.stackexchange.com/,但通常要缓存:>不经常更改的元数据/配置数据.例如.国家/州名单,外部资源地址,逻辑/分支设置,产品/价格/税收定义等.
>检索或生成成本高昂且不需要经常更改的数据.例如.报告的历史数据集.
>当前用户会话特有的数据.
上面的最后一项是您需要小心的地方,因为您可以通过为每个活动会话的数据添加几兆字节来大幅增加应用程序的内存使用量.它还意味着不同级别的缓存 – 应用程序范围,用户会话等.
通常,您不应缓存处于活动更改中的数据.
在较大的系统中,您还需要考虑缓存的位置.是否可以拥有一个中央缓存服务器,或者它是否足以让每个服务器/进程处理自己的缓存?
另外:您应该有一些方法来快速重置/使缓存的数据无效.对于较小或较少任务关键型应用程序,这可能就像重新启动Web服务器一样简单.对于我所使用的大型系统,我们对大多数缓存数据使用12小时绝对到期时间窗口,但是如果需要,我们可以强制立即到期.
这是一个非常广泛的问题,答案在很大程度上取决于您正在构建的特定应用程序/系统.我不清楚您的具体情况是否应该缓存所有用户的消息,但本能地看起来似乎是一个坏主意,因为您似乎有效地缓存了整个数据集.如果新邮件进入或被删除,这可能会导致问题.你会在缓存中更新它们吗?这不是简单地复制后备存储吗?
缓存只是一种性能优化技术,与任何优化一样,在进行实质性更改之前先进行测量,以避免浪费时间优化错误的东西.也许你不需要太多的缓存,它只会使你的应用程序复杂化.也许您正在考虑缓存的数据可以更快的方式检索,或者可以一次检索更少的数据.
总结以上是内存溢出为你收集整理的缓存 – 应该在Web应用程序的缓存中存储什么?全部内容,希望文章能够帮你解决缓存 – 应该在Web应用程序的缓存中存储什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)