首頁 >運維 >Nginx >怎麼在nginx中設定快取靜態文件

怎麼在nginx中設定快取靜態文件

WBOY
WBOY轉載
2023-06-03 12:31:441909瀏覽

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 是指今後的一年)

怎麼在nginx中設定快取靜態文件

以上是怎麼在nginx中設定快取靜態文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除