这篇教程说明你应该怎样配置 nginx、设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片、 CSS 和 Javascript 文件)设置一个时间,这样用户的浏览器就会缓存这些文件。这样能节省带宽,并且在访问你的网站时会显得更快些(如果用户第二次访问你的网站,将会使用浏览器缓存中的静态文件)。
[b]1、准备事项[/b]
我想你需要一个正常工作的 nginx 软件,就像这篇教程里展示的:[url=http://www.1sucai.cn/article/91841.htm]在Ubuntu 16.04 LTS 上安装 Nginx,PHP 7 和 MySQL 5.7 (LEMP) [/url]。
[b]2 配置 nginx[/b]
可以参考 expires 指令手册来设置 HTTP 头部过期时间,这个标记可以放在[code] http {}[/code]、[code]server {}[/code]、[code]location {}[/code] 等语句块或者[code] location {}[/code] 语句块中的条件语句中。一般会在 location 语句块中用[code] expires [/code]指令控制你的静态文件,就像下面一样:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
在上面的例子中,所有后缀名是 [code].jpg[/code]、[code] .jpeg[/code]、[code] .png[/code]、[code] .gif[/code]、[code] .ico[/code]、[code] .css[/code] 和[code] .js [/code]的文件会在浏览器访问该文件之后的 365 天后过期。因此你要确保[code] location {} [/code]语句块仅仅包含能被浏览器缓存的静态文件。
然后重启 nginx 进程:
你可以在 [code]expires [/code]指令中使用以下的时间设置:
[list]
[*][code]off[/code] 让[code] Expires[/code] 和[code] Cache-Control [/code]头部不能被更改。[/*]
[*][code]epoch [/code]将[code] Expires [/code]头部设置成 1970 年 1 月 1 日 00:00:01。[/*]
[*][code]max [/code]设置[code] Expires [/code]头部为 2037 年 12 月 31 日 23:59:59,设置[code] Cache-Control [/code]的最大存活时间为 10 年[/*]
[*]没有[code] @[/code] 前缀的时间意味着这是一个与浏览器访问时间有关的过期时间。可以指定一个负值的时间,就会把 Cache-Control 头部设置成 no-cache。例如:[code]expires 10d[/code] 或者 [code]expires 14w3d[/code]。[/*]
[*]有 [code]@ [/code]前缀的时间指定在一天中的某个时间过期,格式是 Hh 或者 Hh:Mm,H 的范围是 0 到 24,M 的范围是 0 到 59,例如:[code]expires @15:34[/code]。
[/*]
[/list]
你可以用以下的时间单位:
[list]
[*][code]ms[/code]: 毫秒[/*]
[*][code]s[/code]: 秒[/*]
[*][code]m[/code]: 分钟[/*]
[*][code]h[/code]: 小时[/*]
[*][code]d[/code]: 天[/*]
[*][code]w[/code]: 星期[/*]
[*][code]M[/code]: 月 (30 天)[/*]
[*][code]y[/code]: 年 (365 天)
[/*]
[/list]
例如:[code]1h30m [/code]表示一小时三十分钟,[code]1y6M [/code]表示一年六个月。
注意,要是你用一个在将来很久才会过期的头部,当组件修改时你就要改变组件的文件名。因此给文件指定版本是一个不错的方法。例如,如果你有个 javascript.js 文件 并且你要修改它,你可以在修改的文件名字后面添加一个版本号。这样浏览器就要下载这个文件,如果你没有更改文件名,浏览器将从缓存里面加载(旧的)文件。
除了把基于浏览器访问时间设置[code] Expires [/code]头部(比如 [code]expires 10d[/code])之外,也可以通过在时间前面的[code] modified [/code]关键字,将 [code]Expires [/code]头部的基准设为文件修改的时间(请注意这仅仅对存储在硬盘的实际文件有效)。
[b]3 测试[/b]
要测试你的配置是否有效,可以用火狐浏览器的开发者工具中的网络分析功能,然后用火狐访问一个静态文件(比如一张图片)。在输出的头部信息里,应该能看到[code] Expires [/code]头部和有[code] max-age [/code]标记的 [code]Cache-Control[/code] 头部([code]max-age [/code]标记包含了一个以秒为单位的值,比如 31536000 就是指今后的一年)
[img]http://files.jb51.net/file_images/article/201702/201722791243951.png?201712791315[/img]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。