【问题标题】:Is this page caching system reasonable?这个页面缓存系统合理吗?
【发布时间】:2010-09-04 22:09:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: web-applications http-headers web-optimization


    【解决方案1】:

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

    提防不必要的优化:如果页面已经可以正常加载,但您试图挤出几个百分点的速度,我个人不会费心进行任何专门的优化。

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

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

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

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

    【讨论】:

    • 谢谢。您首先完全分析应用程序的调用是绝对正确的,因为我将引入一些新的复杂性。我会研究一下(肯定是 gzip 压缩)和某种形式的基准测试。
    • 3.5 年后(哇),我们刚刚完成了一个提高性能的重大项目。多亏了我们以前没有做过的代码分析,我们发现瓶颈是编码问题。我们现在的方法是用 Ajax 替换某些页面重新加载。您的观点仍然绝对有效,结果证明是完全正确的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    相关资源
    最近更新 更多