V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ruitang
V2EX  ›  PHP

知乎网站是如何做到无缓存的情况下,每个页面响应速度这么快的呢?

  •  
  •   ruitang · 2015-04-19 11:09:29 +08:00 · 4405 次点击
    这是一个创建于 3505 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎网站的响应头有一个:
    Cache-Control:private, no-store, max-age=0, no-cache, must-revalidate, post-check=0, pre-check=0
    表示不缓存

    但是知乎的每一个页面打开速度都非常快,是怎么做到的呢?

    3 条回复    2015-04-21 16:02:59 +08:00
    hitsmaxft
        1
    hitsmaxft  
       2015-04-19 11:15:38 +08:00 via iPhone
    这是浏览器端缓存控制,你第一次打开还是得服务器端运算,跟打开快没关系。

    另外知乎什么时候很快过。。。
    futursolo
        2
    futursolo  
       2015-04-19 14:42:05 +08:00   ❤️ 1
    Tornado(知乎就是基于这个Web Framework的)的主动式文件缓存和异步操作起到了很大的作用。
    知乎应该是缓存静态文件的,但是动态页面并不缓存。
    你打开Chrome的开发者工具之后再刷新知乎的页面,可以看到静态内容几乎全都是304。
    neilwong
        3
    neilwong  
       2015-04-21 16:02:59 +08:00
    一般来说:
    图片是缓存到本地的
    css和js也缓存到本地,需要修改时通过修改html里的引用链接来强制刷缓存。
    html一般不缓存在本地。不过会把接口数据缓存在memcache中,然后动态生成页面返回

    比较耗时的只是一些接口请求,一个页面可能包含多个接口,接口又涉及到数据库查询,无法保证返回时间,所以把接口的数据缓存起来,就能保证页面很快的返回了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:16 · PVG 02:16 · LAX 10:16 · JFK 13:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.