將該行前面的”#”字號刪除,然后將”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 seconds2.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)