【问题标题】:Caching dynamic web pages (page may be 99% static but contain some dynamic content)缓存动态网页(页面可能 99% 是静态的,但包含一些动态内容)
【发布时间】:2014-01-07 20:46:41
【问题描述】:

为静态网页设置一层缓存是一个非常直接的概念。另一方面,大多数用 PHP、Python、Ruby 等动态生成的网页都使用静态模板,并且只有一小部分动态内容。如果我有一个经常被点击的页面并且 99% 是静态的,那么当 1% 的动态内容特定于每个查看该页面的用户时,我还能从缓存中受益吗?我觉得好像同一个问题有两个不同的版本。

  • 对于用户的整个会话而言是静态的内容,例如显示在每个页面上的静态顶部栏(例如,Facebook 等网站上可能包含用户图片和姓名的顶部栏)。此用户特定信息是否可以在 Javascript 中本地缓存,以防止每次页面加载都需要请求相同的信息?

  • 99% 为静态的页面,其中包含 1% 的动态内容,这些内容对于给定的查看者来说大多是唯一的,并且因页面而异(例如,仅通过指示用户是否“喜欢”某些内容而有所不同的页面通过竖起大拇指图标显示页面上的内容。因此,除了页面上某些项目的少数“竖起大拇指”图标外,大部分内容都是静态的。

感谢您对此的任何见解。

【问题讨论】:

    标签: javascript php python ruby-on-rails caching


    【解决方案1】:

    您可以将页面加载为静态页面,然后使用 AJAX 加载少量动态内容。然后,您可以根据需要缓存页面,而不会出现问题。如果动态内容的数量或其他方面使您无法做到这一点,您仍然有多种选择来提高性能。

    如果您的网站被非常频繁地点击(例如每秒几次),您可以将整个动态生成的页面缓存一小段时间,例如一分钟或三十秒。如果使用合理的间隔,这将为您带来巨大的性能改进,并且用户可能不会注意到。

    要进一步改进,请考虑缓存数据库查询和应用程序的其他部分,即使您这样做的时间间隔很短。

    【讨论】:

    • 这是个好主意,缓存页面的静态版本并使用 AJAX 填充动态内容。这将减少登录用户查看页面的初始延迟,并为未登录用户提供整个页面。
    • 这涵盖了动态的、特定于用户的内容因页面而异的情况,但是对于像顶部栏这样的内容,每个用户都是动态的,但每个页面都是静态的,最好在本地缓存它.首选的方法是什么?
    • 可以将其存储在本地的 sessionStorage JavaScript 对象中,只要它可以存储为字符串即可。然后,如果它在那里可用,请阅读并显示它。如果没有,请从服务器获取。
    • 酷。由于这是一个 HTML5 结构,我想我可以为旧版浏览器使用 cookie,或者根本不支持为少数不使用现代浏览器的用户提供这种缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2013-03-03
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多