要回答您的主要问题 - 缓存是提高受数据库性能限制的 Web 应用程序的性能和可伸缩性的最有效方法之一 - 您的应用程序可能属于也可能不属于这一类。
一般来说,我建议设置一个负载测试平台,并在开始优化之前测量应用程序的各个部分以识别瓶颈。
最有效的缓存是系统外部的缓存——CDN 或用户浏览器。阅读浏览器缓存,看看是否有任何东西可以在本地缓存。浏览器具有内置缓存作为标准功能 - 您可以通过 HTTP 标头控制它们。这些缓存非常有效,因为它们甚至可以阻止请求到达您的基础架构;它们对于图像、javascript 文件或样式表等静态 Web 资产非常有效。我认为代理服务器属于同一类别。主要的缺点是很难管理这个缓存——一旦你对浏览器说“缓存这个 2 周”,刷新它就很难了。
下一个最有效的缓存层是在应用服务器上缓存(部分)网页。如果可以做到这一点,就可以避免呈现页面的成本和从数据库中检索数据的成本。不同的 Web 框架对此有不同的解决方案。
接下来,您可以在 ORM 级别进行缓存。Hibernate 有一个非常健壮的实现,它在你的缓存策略中提供了很多粒度。本文展示了一个示例实现,包括如何控制过期时间。您可以在此处对缓存进行大量控制 - 您可以在表级别指定行为,因此您可以将“查找”数据缓存数天,将“事务”数据缓存数秒。
The database already implements a cache "under the hood" - it will load frequently used data into memory, for instance. In some applications, you can further improve the database performance by "de-normalizing" complex data - so the import routine might turn a complex data structure into a simple one. This does trade of data consistency and maintainability against performance.