我在AWS上托管了一些js。我想缓存它,以便不为304 GET请求支付额外的费用,但我不明白为什么两个头文件是不同的。
Request Method:GET
Status Code:304 Not Modifiedhelper.js请求头部
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
If-Modified-Since:Tue, 20 Aug 2013 13:08:13 GMT和响应头
Age:4348
Cache-Control:max-age=604800
Connection:keep-alive为什么它们是不同的?这是否意味着Cache-Control是错误的?我使用Chrome控制台获取标题。
发布于 2013-08-20 23:12:29
我不认为Cache-Control是错误的,看起来你的内容已经被缓存了。从请求头,我了解到第一个请求是在Tue, 20 Aug 2013 13:08:13 GMT上完成的,因为浏览器会提示服务器“嘿,内容从那时起有变化吗?”。作为回报,服务器使用304 Not Modified报头进行响应,表明内容没有更改,应该再缓存604800秒,直到重新验证它。请记住,缓存是在服务器端完成的。所以,你可能想看看你的服务器对js文件的定义。通常,在部署环境中,我指示我的web服务器为*.js *.png等发送缓存头。在配置web服务器以发送缓存头之后,浏览器将负责其余的工作。在这种情况下,您的浏览器将按预期工作。
您可以查看304响应的RFC2616。您可能还想看看this decent caching tutorial。它应该能理清一些思路。
发布于 2013-08-21 18:25:03
问题出在Chrome上。如果你按下刷新按钮,它会使缓存失效,但如果你在地址栏中按回车,它会从缓存中获取资源。
https://stackoverflow.com/questions/18338238
复制相似问题