• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
Nginx expires缓存

expires缓存

对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存。可以, 用到 nginx的expires设置 。nginx中设置过期时间,非常简单。在location或if段里,来写。

设置格式

expires 30s;#30秒
expires 30m;#30分钟
expires 2h;#2个小时
expires 30d;#30天

注意点

服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效。

备注

304 也是一种很好的缓存手段 
原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值 
浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since 
浏览器知道内容无改变,于是直接调用本地缓存. 
这个过程,也请求了服务器,但是传着的内容极少. 
对于变化周期较短的,如静态html,js,css,比较适于用这个方式

设置缓存案例

修改nginx的conf文件,比如设置图片缓存。

http{
    ...
    server {
        listen 80;
        server_name test.com

        location ~* \.(jpg|jpeg|gif|bmp|png){
            expires 1d;#缓存1天
        }

    }
}

  

第一次访问网站中的图片

这里可以看到Cache-Control的内容是86400,这正好是1天的秒数,还有一个就是Expires的内容正好是一天后的请求时间。

第二次访问网站中的图片

我重新在火狐浏览器中测试了,第二次请求后并没有发现有请求,表示了我们的图片被浏览器缓存了。

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/9061048.html

posted on 2018-05-19 17:35  孙龙-程序员  阅读(384)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3