>  기사  >  운영 및 유지보수  >  nginx에서 정적 파일 캐싱을 구성하는 방법

nginx에서 정적 파일 캐싱을 구성하는 방법

WBOY
WBOY앞으로
2023-06-03 12:31:441825검색

1. 준비 항목

제대로 작동하는 nginx 소프트웨어가 필요하다고 생각합니다. ubuntu 16.04 lts에 nginx, php 7 및 mysql 5.7(lemp)을 설치하세요.

2 nginx

를 구성하려면 만료 명령 매뉴얼을 참조하여 http 헤더 만료 시간을 설정할 수 있습니다. 이 태그는 http {}, server { }, location {}과 같은 문 블록 또는 location {} 문 블록의 조건문에 있습니다. 일반적으로 다음과 같이 위치 설명 블록에서 만료 지시문을 사용하여 정적 파일을 제어합니다.  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 rrreee

위 예에서 모든 접미사 이름은 .jpg입니다. > , .jpeg, .png, .gif, .ico, .css .js 파일은 브라우저가 파일에 액세스한 후 365일이 지나면 만료됩니다. 따라서 location {} 블록에는 브라우저에서 캐시할 수 있는 정적 파일만 포함되어 있는지 확인해야 합니다.

nginx에서 정적 파일 캐싱을 구성하는 방법그런 다음 nginx 프로세스를 다시 시작하세요:

rrreee🎜 expires 지시문에서 다음 시간 설정을 사용할 수 있습니다: 🎜
  • off는 expirescache-control 헤더를 변경할 수 없게 만듭니다. 🎜

  • epoch 만료 헤더를 1970년 1월 1일 00:00:01로 설정합니다. 🎜

  • max 만료 헤더를 2037년 12월 31일 23:59:59로 설정하고 캐시 제어를 설정합니다. 의 생존 시간은 10년입니다🎜

  • @ 접두사가 없는 시간은 브라우저 액세스 시간과 관련된 만료 시간임을 의미합니다. 시간에 음수 값을 지정하면 캐시 제어 헤더가 no-cache로 설정됩니다. 예: 10d 만료 또는 14w3d 만료. 🎜

  • @ 접두사가 붙은 시간은 하루 중 특정 시간에 만료됨을 지정하며 형식은 hh 또는 hh:mm이고 h의 범위는 0입니다. ~ 24, m 범위는 0 ~ 59입니다(예: expires @15:34). 🎜🎜

🎜다음 시간 단위를 사용할 수 있습니다: 🎜
  • ms: 밀리초🎜

  • s: 초 🎜

  • m: 분 🎜

  • h: 시간🎜

  • d: 일🎜

  • w: 주🎜

  • m: 월(30일)🎜

  • y: 연도( 365일)🎜🎜

🎜예: 1h30m 은 1시간 30분을 의미하고, 1y6m 은 1년에 6개월을 의미합니다. 🎜🎜향후 만료되는 헤더를 사용하는 경우 구성 요소가 수정될 때 구성 요소의 파일 이름을 변경해야 합니다. 따라서 파일 버전을 지정하는 것이 좋습니다. 예를 들어 javascript.js 파일이 있고 이를 수정하려는 경우 수정된 파일 이름 뒤에 버전 번호를 추가할 수 있습니다. 그러면 브라우저가 파일을 다운로드합니다. 파일 이름을 변경하지 않으면 브라우저는 캐시에서 (이전) 파일을 로드합니다. 🎜🎜브라우저 액세스 시간(예: expires 10d)을 기반으로 expires 헤더를 설정하는 것 외에도 수정된 를 앞에 전달할 수도 있습니다. time 키워드 중 expires 헤더의 기준을 파일이 수정된 시간으로 설정합니다(이는 디스크에 저장된 실제 파일에만 작동한다는 점에 유의하세요). 🎜rrreee🎜🎜3 테스트 🎜🎜🎜🎜 구성이 유효한지 테스트하려면 Firefox 개발자 도구의 네트워크 분석 기능을 사용한 다음 Firefox를 사용하여 정적 파일(예: 이미지)에 액세스할 수 있습니다. 출력 헤더 정보에서 expires 헤더와 max-age 로 표시된 cache-control 헤더를 볼 수 있어야 합니다(max-age 태그에는 초 단위의 값이 포함되어 있습니다. 예를 들어 31536000은 향후 1년을 나타냅니다.)🎜🎜🎜🎜

위 내용은 nginx에서 정적 파일 캐싱을 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제