轉載自:Nginx使用Expires增長瀏覽器緩存加速 javascript
Nginx能夠更改HTTP頭部,這個是Web服務器必須的,固然Nginx更能夠支持在HTTP頭部中添加Expires等相關信息,加強瀏覽器緩存,是網頁加載速度加強。php
Nginx中使用Expires加強瀏覽器緩存css
可以使瀏覽器緩存的HTTP頭部信息主要有如下三種:html
last-modified是根據文件更新時間來肯定是否再次發送加載。經過返回last-modified頭部信息:java
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
GET
/
wp
-
content
/
plugins
/
crayon
-
syntax
-
highlighter
/
js
/
min
/
crayon
.
min
.
js
HTTP
/
1.1
Host
:
www
.
3mc2.com
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
6.1
;
WOW64
;
rv
:
26.0
)
Gecko
/
20100101
Firefox
/
26.0
Accept
:
*
/
*
Accept
-
Language
:
zh
-
cn
,
zh
;
q
=
0.8
,
en
-
us
;
q
=
0.5
,
en
;
q
=
0.3
Accept
-
Encoding
:
gzip
,
deflate
Referer
:
http
:
/
/
www
.
3mc2.com
/
category
/
architecture
Cookie
:
wp
-
settings
-
1
=
hidetb
%
3D0
%
26libraryContent
%
3Dbrowse
%
26align
%
3Dcenter
%
26urlbutton
%
3Dnone
%
26editor
%
3Dtinymce
%
26wplink
%
3D0
%
26ed_size
%
3D508
%
26mfold
%
3Do
;
wp
-
settings
-
time
-
1
=
1389840828
Connection
:
keep
-
alive
HTTP
/
1.1
200
OK
Server
:
nginx
Date
:
Thu
,
16
Jan
2014
15
:
47
:
24
GMT
Content
-
Type
:
application
/
x
-
javascript
Last
-
Modified
:
Thu
,
16
Jan
2014
02
:
29
:
13
GMT
Transfer
-
Encoding
:
chunked
Connection
:
keep
-
alive
Content
-
Encoding
:
gzip
|
再次請求則帶有If-Modified-Since頭部信息,並返回404:jquery
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
GET
/
wp
-
includes
/
js
/
jquery
/
jquery
.
js
?
ver
=
1.10.2
HTTP
/
1.1
Host
:
www
.
3mc2.com
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
6.1
;
WOW64
;
rv
:
26.0
)
Gecko
/
20100101
Firefox
/
26.0
Accept
:
*
/
*
Accept
-
Language
:
zh
-
cn
,
zh
;
q
=
0.8
,
en
-
us
;
q
=
0.5
,
en
;
q
=
0.3
Accept
-
Encoding
:
gzip
,
deflate
Referer
:
http
:
/
/
www
.
3mc2.com
/
category
/
architecture
/
nginx
Connection
:
keep
-
alive
If
-
Modified
-
Since
:
Thu
,
16
Jan
2014
02
:
29
:
13
GMT
HTTP
/
1.1
304
Not
Modified
Server
:
nginx
Date
:
Thu
,
16
Jan
2014
15
:
53
:
34
GMT
Last
-
Modified
:
Thu
,
16
Jan
2014
02
:
29
:
13
GMT
Connection
:
keep
-
alive
|
個人測試環境爲firefox,網址中帶有」?ver=」參數的文件會再次發送請求(返回304),其餘文件均未再次請求。nginx
Etag的原理是將文件資源編號一個etag值,Response給訪問者,訪問者再次請求時,帶着這個Etag值,與服務端所請求的文件的Etag對比,若是不一樣了就從新發送加載,若是相同,則返回304.git
Expires是給一個資源設定一個過時時間,也就是說無需去服務端驗證,直接經過瀏覽器自身確認是否過時便可,因此不會產生額外的流量。此種方法很是適合不常常變更的資源。若是文件變更較頻繁,不要使用Expires來緩存。github
對於本博客來講,css樣式和JS腳本基本已經定型,因此最適合的方法是Expires來緩存一些內容到訪問者瀏覽器。經過配置Nginx配置文件實現相關功能:web
0
1
2
3
4
5
6
7
8
9
10
11
12
13
|
server
{
.
.
.
.
.
root
/
www
.
3mc2.com
;
index
index
.
html
index
.
htm
index
.
php
;
location
~
.
*
\
.
(
gif
|
jpg
|
jpeg
|
bmp
|
png
|
ico
|
txt
|
mp3
|
mp4
|
swf
)
{
expires
15d
;
}
location
~
.
*
\
.
(
css
|
js
)
{
expires
12h
;
}
.
.
.
.
.
.
}
|