如何在nginx中配置缓存静态文件

 更新时间:2017年02月27日 09:20:00   作者:Falko Timme  
本篇文章主要介绍了如何在 nginx 中缓存静态文件配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

这篇教程说明你应该怎样配置 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 就是指今后的一年)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Windows Server Nginx 反向代理Spring Boot配置无效报404未找到的问题

    Windows Server Nginx 反向代理Spring Boot配置无效报404未找到的问题

    一个Spring Boot的系统,开发完成发布到Windows服务器里,使用nginx作为反向代理,修改刷新配置文件,nginx.conf,总是报错404,这篇文章主要介绍了Windows Server Nginx 反向代理Spring Boot配置无效 404 未找到的问题及解决方案
    2024-01-01
  • Nginx 禁止IP访问如何实现

    Nginx 禁止IP访问如何实现

    这篇文章主要介绍了Nginx 禁止IP访问如何实现的相关资料,需要的朋友可以参考下
    2017-02-02
  • Nginx配置本地图片服务器的实现

    Nginx配置本地图片服务器的实现

    本文主要介绍了Nginx配置本地图片服务器的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Nginx获取客户端真实IP的原理及配置方法

    Nginx获取客户端真实IP的原理及配置方法

    在现代生产环境中,Nginx 作为反向代理服务器被广泛应用于服务的暴露与负载均衡,尤其是在面对公网访问时,如何准确获取并传递客户端的真实 IP,成为开发与运维的重要课题,本文将详细剖析 Nginx 获取客户端真实 IP 的原理、配置方法,需要的朋友可以参考下
    2025-04-04
  • nginx如何开通gzip压缩传输文件

    nginx如何开通gzip压缩传输文件

    Gzip压缩是一种有效提升网站性能的方法,通过减少传输数据量和提高传输速度,Nginx服务器支持Gzip压缩,适合压缩HTML、CSS、JavaScript、JSON和XML等文本文件,配置中需设置gzip_types指定压缩文件类型,gzip_comp_level设置压缩级别
    2024-09-09
  • Nginx代理Partainer的实现

    Nginx代理Partainer的实现

    本文主要介绍了Nginx代理Partainer的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 使用Nginx实现灰度发布的使用

    使用Nginx实现灰度发布的使用

    这篇文章主要介绍了使用Nginx实现灰度发布的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Nginx gateway集群和动态网关的实现思路

    Nginx gateway集群和动态网关的实现思路

    这篇文章主要介绍了Nginx gateway集群和动态网关,动态网关即任何配置都实现不用重启网关服务器都可以及时刷新,对Nginx gateway集群相关知识感兴趣的朋友一起看看吧
    2022-10-10
  • Nginx配置检测服务状态的实现方法

    Nginx配置检测服务状态的实现方法

    这篇文章主要介绍了Nginx配置检测服务状态的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • nginx访问控制的两种方法

    nginx访问控制的两种方法

    这篇文章主要介绍了关于nginx访问控制的两种方法,一种是基于Basic Auth认证,另一种是基于IP的访问控制,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03

最新评论