代码之家  ›  专栏  ›  技术社区  ›  Jack marksy

缓存是否适合这种情况?

  •  0
  • Jack marksy  · 技术社区  · 15 年前

    所以我有了一个php代码点火器webapp,并试图决定是否合并缓存。

    请容忍我的这一点,因为我很高兴地承认我不完全理解缓存!

    • 所以第一个用户加载一个用户提交内容的页面。加载“慢”需要0.8秒(处理)。然后,下一个用户加载同一个页面,从缓存“快速”加载该页面需要0.1秒。

    • 第三个用户加载它,也需要0.1秒的执行时间。此用户决定在页面上发表评论。

    • 第四个用户在2分钟后加载它,但没有看到第三个用户的评论,因为在缓存到期前还有50分钟的时间。

    你在这种情况下做什么?在这样的页面上合并缓存是否值得?

    我想使用缓存的原因是我运行了一些测试。 没有 缓存时,我的页面平均执行时间为0.7864秒。 缓存,平均需要0.0138秒。 提高了5599%!

    我知道这还只是几毫秒,但即使如此…

    杰克

    3 回复  |  直到 15 年前
        1
  •  6
  •   timdev    15 年前

    你想要更好的缓存。

    通常,您不应该达到缓存的超时。相反,一些用户驱动的操作将 使无效 高速缓存。

    因此,如果您有这样的场景:

    1. 乔(有史以来)第一次加载页面。没有缓存,所以需要一段时间,但结果会一直缓存。
    2. Mary从缓存中加载页面,并快速加载。
    3. 玛丽添加了一条评论。注释被添加到数据库中(或其他),软件会使缓存失效。
    4. pete会出现并加载页面,缓存无效,因此需要一秒钟来呈现页面,结果会被缓存(作为有效的缓存项)。
    5. 山姆来了,页面加载很快
    6. 詹妮走了过来,页面加载很快。

    我不是一个代码引爆者,所以我不确定这个框架会为您做什么,但是上面的内容通常是应该发生的。您的应用程序应该具有足够的智能,以便在写入需要缓存无效化的数据时使缓存项无效。

        2
  •  1
  •   bschaeffer    15 年前

    试词 query caching 相反。每次仍会呈现该页,但会缓存数据库结果…并且可以使用本机CI功能(即没有第三方库)删除它们。

        3
  •  0
  •   mhitza Federico Taschin    15 年前

    虽然CI只提供页面级缓存,但在没有失效的情况下,我处理这个问题的方式有所不同。处理这个问题的最简单方法是从缓存中加载所有重内容,而通过不可缓存的Ajax调用加载的注释。

    或者你可以研究解决这个问题的定制插件,就像你之前指出的那样。

    所有这些都归结为您想要控制缓存的粒度。对于博客这样简单的事情,通过外部Ajax调用加载注释(按需——就像用户明确请求注释一样)是最好的方法。

    推荐文章