如何在 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 指令中使用以下的时间设置:
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。
你可以用以下的时间单位:
例如:1h30m 表示一小时三十分钟,1y6M 表示一年六个月。
注意,要是你用一个在将来很久才会过期的头部,当组件修改时你就要改变组件的文件名。因此给文件指定版本是一个不错的方法。例如,如果你有个 javascript.js 文件 并且你要修改它,你可以在修改的文件名字后面添加一个版本号。这样浏览器就要下载这个文件,如果你没有更改文件名,浏览器将从缓存里面加载(旧的)文件。
除了把基于浏览器访问时间设置 Expires 头部(比如 expires 10d)之外,也可以通过在时间前面的modified 关键字,将 Expires 头部的基准设为文件修改的时间(请注意这仅仅对存储在硬盘的实际文件有效)。
expires modified 10d;
要测试你的配置是否有效,可以用火狐浏览器的开发者工具中的网络分析功能,然后用火狐访问一个静态文件(比如一张图片)。在输出的头部信息里,应该能看到 Expires 头部和有 max-age 标记的 Cache-Control 头部(max-age 标记包含了一个以秒为单位的值,比如 31536000 就是指今后的一年)
原文发布时间为:2016-08-28
本文来自云栖社区合作伙伴“Linux中国”
功能模块少 源代码只保留与http 及核心功能代码,出于性能考虑,不像httpd 有那么丰富的插件。
这篇教程说明你应该怎样配置 nginx、设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片、 CSS 和 Javascript 文件)设置一个时间,这样用户的浏览器就会缓存这些文件。
相关文章
- C#-文件操作
- linux环境中 1秒内 创建一个超级大文件(100G)的方法
- 在 React 中引入静态 js 文件
- 第六章 CSP 架构 - 静态文件
- nginx配置https和直接访问静态文件的方式
- Vue-cli / webpack 加载静态js文件的方法
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
- [Django学习]静态文件处理
- git 管理和存储二进制大文件
- tomcat 8升级到最新版时,静态文件报错 400
- 利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试
- iOS如何查看静态库.a文件支持的cpu类型
- Win7升级Win10,复制文件到原来Win7系统创建的文件夹,提示需要管理员权限
- Nginx部署Vue项目静态文件404解决方案
- 致远oa wpsassistservlet任意文件上传漏洞
- uni-app开发注意事项:Unexpected end of JSON input、static目录注意事项、模板内引入静态资源、JS文件引入问题、运行环境判断、easycom组件模式
- python:引用其他不同目录下的python文件
- nginx配置访问静态文件,图片、视频、音频等
- delphi中的idhttpserver如何才能收到idhttp发送来的exerar文件呢
- 安卓使用WebView下载文件,安卓实现软件升级功能
- Truestudio链接静态库文件的方法
- WebUI文件拖拽上传与下载文件
- nodejs 静态资源文件与登陆交互