V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
amxku
V2EX  ›  Tornado

善用 304

  •  
  •   amxku · 2012-09-25 14:38:21 +08:00 · 5474 次点击
    这是一个创建于 4451 天前的主题,其中的信息可能已经有所发展或是发生改变。
    7 条回复    1970-01-01 08:00:00 +08:00
    enj0y
        1
    enj0y  
       2012-09-25 15:17:55 +08:00
    可惜,NGINX的304是条软肋。万恶的俄罗斯人!!!
    Js
        2
    Js  
       2012-09-25 15:23:07 +08:00
    @enj0y 304该程序做的, nginx这层做304本来就毫无意义
    kernel1983
        3
    kernel1983  
       2012-09-26 11:25:24 +08:00
    静态文件应该让nginx来304吧, 的确需要注意这一点
    kernel1983
        4
    kernel1983  
       2012-09-26 12:04:14 +08:00
    我发现开着chrome的调试工具的时候, 是看不到浏览器发送 If-Modified-Since 头的, 难怪一直看不到304

    正确的方法是关掉调试工具, 去服务器端看nginx access log, 确定304返回
    enj0y
        5
    enj0y  
       2012-09-26 23:27:33 +08:00
    @kernel1983 因为NGINX在输出静态文件时未支援etag头,所以浏览器不会发送ifs请求头的。
    enj0y
        6
    enj0y  
       2012-09-26 23:31:18 +08:00
    @Js 程序输出的内容大多是动态,动态内容很少304能命中的。而NGINX的优势就在于静态高并发、高效proxy,etag(304)适用于绝大多静态请求,NGINX在直接输出静态文件(类似lnmpa构架的静态请求时no proxy passed)时,根本没有后端,也就没有程序,此时若由NGINX输出etag,则可以为服务器节省不少304命中的流量。
    kernel1983
        7
    kernel1983  
       2012-09-27 10:43:10 +08:00
    @enj0y 但是nginx还是可以在response header里发送Last-Modified, 我昨天试过了, 这样浏览器在下一次request header的时候就会发送 If-Modified-Since 了, chrome 测试必须关掉调试工具

    etag的话是需要hash运算的, 我想nginx不支持是因为节省cpu吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:24 · PVG 12:24 · LAX 20:24 · JFK 23:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.