2010-09-04 24 views
1

我正在开发一个基于web的系统,用户将点击很多页面。因为他们经常会回到特定的页面(例如,书籍的概述),所以我想实施一些缓存机制来加快速度。这个页面缓存系统是否合理?

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

当他下次登录时,我会检查是否存在带有URL和用户标识的条目。如果有的话,我将存储的MD5与我将要计算的MD5进行比较,如果MD5相同,则发送“未更改”标题,以便浏览器不必下载整个页面。

回答

3

您是否第一次对Web应用程序进行了描述,以确定您的性能瓶颈所在?

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

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

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

如果我们的目标是通过明文内容(即HTML,CSS和JavaScript)来减少带宽使用,我建议您只需打开gzip压缩。另外,考虑这种情况下的静态内容Web服务器。

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

+0

谢谢。你完全正确的打电话来首先完成应用程序的分析,因为我会引入一些新的复杂性。我会研究这个(以及明确的gzip压缩)和某种形式的基准测试。 – PeerBr 2010-09-05 13:23:38

+0

3.5年后(哇),我们刚刚完成了一个重大项目来提高性能。由于我们之前没有做过代码分析,我们发现了编码问题的瓶颈。我们现在的做法是用Ajax替换某些页面重新加载。你的观点仍然是绝对有效的,他们发现了完全正确的事情。 – PeerBr 2014-02-01 22:03:19