1

我正在开发一个基于网络的系统,用户将在其中点击很多页面。因为它们经常会返回特定页面(例如,书籍概览),所以我想实现一些缓存机制来加快速度。

在显示用户的内容之前,我会将内容的 MD5 校验和连同用户的 ID 和页面的 URL 一起存储在数据库中。

下次他登录时,我会检查是否有包含 URL 和 UserID 的条目。如果有,我将存储的 MD5 与我新计算的 MD5 进行比较,如果 MD5 相等,我发送一个“未更改”标题,这样浏览器就不必下载整个页面。

4

1 回答 1

3

您是否首先分析了 Web 应用程序以确定性能瓶颈所在的位置?

当心不必要的优化:如果页面已经加载得很好,但你试图挤出几个百分点的速度,我个人不会为任何专门的优化而烦恼。

使用建议的方法,请记住,除了 MD5 计算之外,您仍将进行数据库命中。首先确保您在数据库中有适当的索引以加快查询速度——这可能就是您需要做的所有事情。

页面图像重吗?图像是作为 BLOB 存储在数据库中还是文件系统中?如果图像存储在数据库中,请将它们移动到文件系统并将文件名存储在数据库中。使用专用于静态内容的 Web 服务器来提供图像。静态内容服务器也可以是您的应用程序的代理。

如果目标是减少纯文本内容(即 HTML、CSS 和 JavaScript)的带宽使用,我建议简单地打开 gzip 压缩。此外,请考虑这种情况下的静态内容 Web 服务器。

但是要回答您提出的解决方案是否合理的问题:我想它可以工作,但是关于它在任何给定站点上是否有效的因素有很多。因此,您可以做的一件事是实现缓存系统,然后针对您的站点(例如,Apache ab)运行基准测试,看看它是否真的有所作为。

于 2010-09-04T22:24:29.130 回答