中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Apache啟用mod_expires&mod_headers實(shí)現(xiàn)靜態(tài)緩存

一.瀏覽器緩存原理

將該行前面的”#”字號刪除,然后將”httpd.conf”設(shè)定檔儲存后,重新啟動Apache來使這個更新生效.

創(chuàng)新互聯(lián)公司專注于東風(fēng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供東風(fēng)營銷型網(wǎng)站建設(shè),東風(fēng)網(wǎng)站制作、東風(fēng)網(wǎng)頁設(shè)計、東風(fēng)網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造東風(fēng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供東風(fēng)網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

當(dāng)然如果我們是租用虛擬主機(jī)的話,”httpd.conf”設(shè)定檔我們一般用戶是接觸不到的,而在網(wǎng)站根目錄里寫個”.htaccess”設(shè)定檔, 我想在運(yùn)用上相對是較靈活的.”mod_expires”的設(shè)定資料除了可以寫在Apache的”httpd.conf”設(shè)定檔中,也可以寫 在”.htaccess”設(shè)定檔里.

我們知道在使用瀏覽器瀏覽網(wǎng)頁時,瀏覽器會把網(wǎng)頁資料快取(Cache)下來儲存在本機(jī)端,用以加快下回瀏覽相同網(wǎng)頁時不必再重新由網(wǎng)站上下載,進(jìn) 而有加速的效果.使用mod_expires模組來加速網(wǎng)頁瀏覽,這里所謂的”加速”,其實(shí)是利用”mod_expires”的功能,來設(shè)定網(wǎng)頁文件的過 期時間,加長網(wǎng)頁文件被瀏覽器快取(Cache)保存的時間.如此一來,只要網(wǎng)頁文件的過期時間未到,瀏覽器就會引用快取的資料,而不用花時間再去下載網(wǎng) 站上的資料.另一方面帶給站長的好處是,可以減少瀏覽者對網(wǎng)站的流量耗用(例如有些虛擬主機(jī)有限制網(wǎng)站可使用的流量).

二.mod_expires實(shí)現(xiàn)頁面緩存

LoadModule expires_module modules/mod_expires.so

mod_expires默認(rèn)緩存指令是ExpiresDefault,這個可以對所有文件進(jìn)行緩存,我們?nèi)绻朐O(shè)置默認(rèn)緩存,選用以方式

<IfModule expires_module> ExpiresActive On #訪問之后的一個月不再更新 ExpiresDefault "access plus 1 month" #訪問之后的4周不再更新 #ExpiresDefault "access plus 4 weeks" #訪問之后的30天不再更新 #ExpiresDefault "access plus 30 days" </IfModule>

2.1ExpiresDefault指令

按照Apache Server的介紹,ExpiresDefault的格式如下

ExpiresDefault "<base> [plus] {<num> <type>}*"

其中,base取值如下

access #訪問之后,從當(dāng)前時間計算 now(等價于access)#訪問之后,從當(dāng)前時間計算 modification #修改之后,從服務(wù)器文件修改后計算

plus是關(guān)鍵字,這個是系統(tǒng)指定的寫法

<num>表示計數(shù),單位為秒

<type> 表示日期單位,后者取值如下

years months weeks days hours minutes seconds

2.2ExpiresByType 指令

實(shí)際上,ExpiresDefault指令有非常嚴(yán)重的緩存問題,我們應(yīng)該知道,所有資源被緩存,導(dǎo)致網(wǎng)站會出現(xiàn)更新問題,我們更應(yīng)該少用ExpiresDefault而多用ExpiresByType,此外ExpiresDefault設(shè)置的時間要盡可能短。

ExpiresByType 指令規(guī)則如下

ExpiresByType type/encoding "<base> [plus] {<num> <type>}*"

其中base,num,type和ExpiresDefault 類似。

當(dāng)然,在Apache Http Server中,指令還可以使用簡寫方式

ExpiresDefault type/encoding [ufrist(base)][seconds] ExpiresByType type/encoding [ufrist(base)][seconds]

ufrist(base) 表示 base的首字母大寫, seconds表示過期時間,單位為秒

<IfModule expires_module> # Axxxx - Access seconds ,表示訪問之后經(jīng)過多少秒 # Mxxxx - Modifyed seconds ,表示修改之后經(jīng)過多少秒(推薦) ExpiresActive On ExpiresDefault A3600 #表示一小時后更新 ExpiresByType image/x-icon A86400 #表示1天后更新 #腳本文件和css樣式,我們最好使用 Modification ExpiresByType application/javascript M604800 #表示修改完之后,更新之后的1周以后更新 ExpiresByType text/css M2592000 #表示修改后如果沒有再次修改,那么經(jīng)過一個星期才允許更新緩存 ExpiresByType image/gif M604800 ExpiresByType image/png A604800 ExpiresByType image/jpeg M604800 ExpiresByType text/plain A604800 ExpiresByType application/x-shockwave-flash A604800 ExpiresByType video/x-flv A604800 ExpiresByType application/pdf A604800 ExpiresByType text/html A900 </IfModule>

此外,以上寫法可讀性好,但是如果要更方便一些,不妨試試如下寫法

<IfModule expires_module> ExpiresActive On ExpiresDefault A3600 # 1 年 <FilesMatch ".(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$"> ExpiresDefault A9030400 </FilesMatch> # 1 星期 <FilesMatch ".(jpg|jpeg|png|gif|swf)$"> ExpiresDefault A604800 </FilesMatch> # 3 小時 <FilesMatch ".(txt|xml|js|css)$"> ExpiresDefault M10800 </FilesMatch> </IfModule>

三.mod_headers緩存實(shí)現(xiàn)

1.關(guān)于mod_headers

Apache HTTP server官網(wǎng)關(guān)于mod_headers的描述是自定義一個Request Header和Response Header

2.mod_headers用法

加載模塊

簡單例子

<IfModuleheaders_module> Header set MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request." </IfModule>

當(dāng)然,既然允許自定義,我們不妨可以通過添加Cache-Control來增強(qiáng)緩存

<IfModule headers_module> # htm,html,txt類的文件緩存一個小時 <filesmatch ".(html|htm|txt)$"> header set cache-control "max-age=3600" </filesmatch> # css, js, swf類的文件緩存一個星期 <filesmatch ".(css|js|swf)$"> header set cache-control "max-age=604800" </filesmatch> </IfModule>

3.資源更新問題

不像mod_expires模塊具有Modification指令,那么資源更新了就會出現(xiàn)問題,對于這些問題如何處理?

Cache-Control加入HTTP/1.1是為了解決時間精度問題,當(dāng)然,他有好幾個搭檔,Etag,If-Range,Last-Modified,這幾個選項(xiàng)Apache服務(wù)器本身就實(shí)現(xiàn)了,當(dāng)然,我們還要注意,http.conf和.htaccess不能出現(xiàn)如下 Header unset Etag和Header unset Last-Modifie,否則更新緩存將成為大問題,導(dǎo)致網(wǎng)站更新UI失敗,數(shù)據(jù)提交出錯,斷點(diǎn)續(xù)傳失敗等問題。

解決上述問題,最好不要出現(xiàn)如下配置

<IfModule mod_headers> Header unset Last-Modified Header unset Etag </IfModule>

注意:Etag在分布式跨服務(wù)器請求時會可能遇到校驗(yàn)失敗的問題,導(dǎo)致緩存實(shí)效,從而也會引發(fā)更新UI失敗,數(shù)據(jù)提交出錯,斷點(diǎn)續(xù)傳失敗等問題。因此,如果你是分布式系統(tǒng),建議還是Header unset Etag或者FileETag None。

本文名稱:Apache啟用mod_expires&mod_headers實(shí)現(xiàn)靜態(tài)緩存
網(wǎng)站地址:http://www.rwnh.cn/article44/cjhphe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站營銷網(wǎng)站收錄、品牌網(wǎng)站制作、動態(tài)網(wǎng)站、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
兴城市| 罗田县| 龙岩市| 六盘水市| 玛曲县| 阳城县| 石阡县| 卫辉市| 仁化县| 涡阳县| 汝城县| 嵊州市| 梁山县| 通许县| 潍坊市| 翁牛特旗| 宁阳县| 阿拉尔市| 仁化县| 许昌市| 昭通市| 嘉义县| 嘉峪关市| 盐亭县| 鱼台县| 涿鹿县| 金塔县| 云龙县| 犍为县| 固原市| 邹城市| 丹凤县| 阿克陶县| 股票| 黄平县| 华安县| 新和县| 新平| 东兴市| 怀来县| 伊川县|