二维码
微世推网

扫一扫关注

当前位置: 首页 » 企业商讯 » 商机资讯 » 正文

霸气_Nginx_中缓存静态文件秘籍

放大字体  缩小字体 发布日期:2022-12-09 03:20:46    作者:郭艺欣    浏览次数:100
导读

这篇教程说明你应该怎样配置 nginx、设置 HTTP 头部过期时间,用 Cache-Control 中得 max-age 标记为静态文件(比如支持、 CSS 和 Javascript 文件)设置一个时间,这样用户得浏览器就会缓存这些文件。这样能节省带宽,并且在访问你得网站时会显得更快些(如果用户第二次访问你得网站,将会使用浏览器缓存中得静态文件)。1

这篇教程说明你应该怎样配置 nginx、设置 HTTP 头部过期时间,用 Cache-Control 中得 max-age 标记为静态文件(比如支持、 CSS 和 Javascript 文件)设置一个时间,这样用户得浏览器就会缓存这些文件。这样能节省带宽,并且在访问你得网站时会显得更快些(如果用户第二次访问你得网站,将会使用浏览器缓存中得静态文件)。

1、准备事项

我想你需要一个正常工作得 nginx 软件,可以查看另一篇得帖子:在 Ubuntu 16.04 LTS 上安装 Nginx,PHP 7 和 MySQL 5.7 (LEMP)。

2 配置 nginx

可以参考 expires 指令手册来设置 HTTP 头部过期时间,这个标记可以放在 "http {}"、"server {}"、"location {}" 等语句块或者 "location {}" 语句块中得条件语句中。一般会在 "location" 语句块中用 "expires" 指令控制你得静态文件,就像下面一样:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d;}

在上面得例子中,所有后缀名是 .jpg、 .jpeg、 .png、 .gif、 .ico、 .css 和 .js 得文件会在浏览器访问该文件之后得 365 天后过期。因此你要确保 location {} 语句块仅仅包含能被浏览器缓存得静态文件。

然后重启 nginx 进程:

/etc/init.d/nginx reload

你可以在 "expires" 指令中使用以下得时间设置:

  • "off" 让 "Expires" 和 "Cache-Control" 头部不能被更改。
  • "epoch" 将"Expires" 头部设置成 1970 年 1 月 1 日 00:00:01。
  • "max" 设置 "Expires" 头部为 2037 年 12 月 31 日 23:59:59,设置" Cache-Control "得蕞大存活时间为 10 年
  • ●没有" 等 "前缀得时间意味着这是一个与浏览器访问时间有关得过期时间。可以指定一个负值得时间,就会把" Cache-Control "头部设置成" no-cache"。例如:"expires 10d" 或者" expires 14w3d"。
  • ●有" 等 "前缀得时间指定在一天中得某个时间过期,格式是 Hh 或者Hh:Mm,H 得范围是 0 到 24,M 得范围是 0 到 59,例如:"expires 等15:34"。

    你可以用以下得时间单位:

  • "ms": 毫秒
  • "s": 秒
  • "m": 分钟
  • "h": 小时
  • "d": 天
  • "w": 星期
  • "M": 月 (30 天)
  • "y": 年 (365 天)

    例如:"1h30m" 表示一小时三十分钟,"1y6M" 表示一年六个月。

    注意,要是你用一个在将来很久才会过期得头部,当组件修改时你就要改变组件得文件名。因此给文件指定版本是一个不错得方法。例如,如果你有个 javascript.js 文件 并且你要修改它,你可以在修改得文件名字后面添加一个版本号。这样浏览器就要下载这个文件,如果你没有更改文件名,浏览器将从缓存里面加载(旧得)文件。

    除了把基于浏览器访问时间设置" Expires" 头部(比如 "expires 10d")之外,也可以通过在时间前面得" modified "关键字,将 "Expires" 头部得基准设为文件修改得时间(请注意这仅仅对存储在硬盘得实际文件有效)。

    expires modified 10d;

    3 测试

    要测试你得配置是否有效,可以用火狐浏览器得开发者工具中得网络分析功能,然后用火狐访问一个静态文件(比如一张支持)。在输出得头部信息里,应该能看到 Expires 头部和有 max-age 标记得 Cache-Control 头部(max-age 标记包含了一个以秒为单位得值,比如 31536000 就是指今后得一年)

    4 链接

    nginx 得 Http 头部模块(HttpHeadersModule):" 感谢分享wiki.nginx.org/HttpHeadersModule"

    感谢分享特别linuxprobe感谢原创分享者/cache-in-nginx.html

  •  
    (文/郭艺欣)
    打赏
    免责声明
    • 
    本文为郭艺欣原创作品•作者: 郭艺欣。欢迎转载,转载请注明原文出处:http://www.udxd.com/qysx/show-133259.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
     

    Copyright©2015-2023 粤公网安备 44030702000869号

    粤ICP备16078936号

    微信

    关注
    微信

    微信二维码

    WAP二维码

    客服

    联系
    客服

    联系客服:

    24在线QQ: 770665880

    客服电话: 020-82301567

    E_mail邮箱: weilaitui@qq.com

    微信公众号: weishitui

    韩瑞 小英 张泽

    工作时间:

    周一至周五: 08:00 - 24:00

    反馈

    用户
    反馈