先谈【xiān tán】gzip的配置【de pèi zhì】方法,在【zài】🏀apache2.0以上(包括👧apache2.0)的版中gzip压缩使用的是mod_deflate模块,下面是✅具体配置步骤【zhì bù zhòu】🤧:
第1步
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
打开【dǎ kāi】httpd.conf后,先将上🗼面两行【miàn liǎng háng】配置前【pèi zhì qián】面的【miàn de】👽#号去掉🐁,这样【zhè yàng】apache就会启用这两个模块【mó kuài】,其中mod_deflate是压缩【shì yā suō】🔩模块【mó kuài】,就是对【jiù shì duì】🚑要传输到客户端的代码进行gzip压缩🔩;mod_headers模块【mó kuài】的作用是🛶告诉浏🔬览器页面使用了【le】gzip压缩🔩,如果不开启【kāi qǐ】🍈mod_headers那么浏览器就🌍会对🧣gzip压缩过🚥的页面进行下载⏰,而无法【ér wú fǎ】正常显【zhèng cháng xiǎn】示。
第2步
在【zài】httpd.conf中加入以下代【yǐ xià dài】码【mǎ】🧝,可以加到任何空白地👋方,不了解【bú le jiě】🕣apache的朋友💅,如果担心加错【xīn jiā cuò】📍地方,就放到http.conf文件的【wén jiàn de】最后一🦉行。
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE #必须的【bì xū de】,就像一个开关【gè kāi guān】一样🌶,告诉🕖apache对传输【duì chuán shū】到浏览器的内容进行压缩👒
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不😝对【duì】后缀🔕gif,jpg,jpeg,png的图片文件进行压缩【háng yā suō】
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上【tóng shàng】,就是设置不😝对【duì】exe,tgz,gz。。。的文件✒进行压缩【háng yā suō】
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/* #设置对【duì】🚿文件是【wén jiàn shì】文本的【wén běn de】🐈内容进⛹行压缩🦍,例如【lì rú】text/html text/css text/plain等
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段代码你只【mǎ nǐ zhī】🌳需要了【xū yào le】🆔解🐤application/javascript application/x-javascript这段就【zhè duàn jiù】可以了,这段的意思是【yì sī shì】对【duì】🚿javascript文件进🙋行压缩🦍
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #这段是告诉apache对【duì】🚿php类型的文件进🙋行压缩🦍
BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些【yǒu yī xiē】🥎问题【wèn tí】🍰,所以只压缩文🚝件类型🎭是🔝text/html的🏚
BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多【yǒu gèng duō】的🏚问题【wèn tí】🍰,所以不【suǒ yǐ bú】开启压缩
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏览器会伪装成 Netscape ,但是🔝事实上它没有【tā méi yǒu】问题【wèn tí】🍰
Header append Vary User-Agent env=!dont-vary #确保代【què bǎo dài】理不会发送错🍊误的内容【róng】🙆
</IfModule>
|
本配置【běn pèi zhì】🙅到这里apache中的🏎gzip压缩就配置完🤶成💉,重启【chóng qǐ】apache后🐧,新的配置🙅就会生效【xiào】,当然这里我们还不会【hái bú huì】重启【chóng qǐ】apache因为下一步要【yī bù yào】📒配置🙅http缓存【huǎn cún】,也就是🙏mod_expires模块【mó kuài】。
第1步
LoadModule expires_module modules/mod_expires.so
在httpd.conf中【zhōng】,找到上【zhǎo dào shàng】面的代码🎑,然后将前面的🏮#去掉【qù diào】👣
第2步
在httpd.conf中加入以下代码🤠,可以加到任何空白地【kōng bái dì】🆑方,不了解😔apache的朋友🔍,如果担【rú guǒ dān】心加错【xīn jiā cuò】🔜地方,就放到【jiù fàng dào】http.conf文件的【wén jiàn de】最后一【zuì hòu yī】➖行。
<IfModule mod_expires.c>
ExpiresActive On #激活🔒http缓存【cún】🏴,也就是【yě jiù shì】👥个开关【gè kāi guān】🛃,必须有👹的一段🤪代码
ExpiresDefault A604800 #默认缓【mò rèn huǎn】🕳存时间【cún shí jiān】🍔为⛑604800秒【miǎo】🕎,也就是【yě jiù shì】👥7天,A表示以【biǎo shì yǐ】🤘客户端【kè hù duān】🛌时间为准【zhǔn】♏
ExpiresByType text/css A3600 #对【duì】🥍css文件缓【wén jiàn huǎn】🛠存【cún】🚪3600秒【miǎo】🕎,也就是【yě jiù shì】👥1小时【xiǎo shí】⚪,A表示以【biǎo shì yǐ】🤘客户端【kè hù duān】🛌时间为准【zhǔn】♏
ExpiresByType text/html A3600 #对【duì】🥍html文件缓【wén jiàn huǎn】🛠存【cún】🚪3600秒【miǎo】🕎,也就是【yě jiù shì】👥1小时【xiǎo shí】⚪,A表示以【biǎo shì yǐ】🤘客户端【kè hù duān】🛌时间为准【zhǔn】♏
ExpiresByType application/x-javascript A3600 #对【duì】🥍javascript文件缓【wén jiàn huǎn】🛠存【cún】🚪3600秒【miǎo】🕎,也就是【yě jiù shì】👥1小时【xiǎo shí】⚪,A表示以【biǎo shì yǐ】🤘客户端【kè hù duān】🛌时间为准【zhǔn】♏
ExpiresByType image/gif "access plus 2 month" #对【duì】🥍gif图片缓✅存【cún】🚪2个月【gè yuè】,以客户【yǐ kè hù】✴端时间【duān shí jiān】🌙为准【zhǔn】♏
ExpiresByType image/jpeg "access plus 2 month" #对【duì】🥍jpeg和【hé】jpg图片缓✅存【cún】🚪2个月【gè yuè】,以客户【yǐ kè hù】✴端时间【duān shí jiān】🌙为准【zhǔn】♏
ExpiresByType image/png "access plus 2 month" #对【duì】🥍png图片缓✅存【cún】🚪2个月【gè yuè】,以客户【yǐ kè hù】✴端时间【duān shí jiān】🌙为准【zhǔn】♏
ExpiresByType image/x-icon "access plus 2 month" #对【duì】🥍浏览器小图标缓存【cún】🏴2个月【gè yuè】,以客户【yǐ kè hù】✴端时间【duān shí jiān】🌙为准【zhǔn】♏
ExpiresByType application/x-shockwave-flash A2592000 #对【duì】🥍flash文件缓【wén jiàn huǎn】🛠存【cún】🚪2592000秒【miǎo】🕎,也就是【yě jiù shì】👥1个月【gè yuè】,A表示以【biǎo shì yǐ】🤘客户端【kè hù duān】🛌时间为准【zhǔn】♏
#特别注【tè bié zhù】意也可🎁以使用【yǐ shǐ yòng】 ExpiresByType text/css M3600 这里的【zhè lǐ de】M表示以【biǎo shì yǐ】文件最后修改时间为【shí jiān wéi】准缓存1小时♎,例如有【lì rú yǒu】些时候,我们的HTML是大批量定时🐡更新的📊,这个时🔝候就可🐲以用到M
Header unset Pragma #删除掉http头信息【tóu xìn xī】💺中的🎷Pragma,不懂的😨可以🗳google一下【yī xià】Pragma,他也是控制浏【kòng zhì liú】览器缓🚅存的【cún de】🎷,不过是用于http1.0标准
FileETag None
Header unset ETag #这段代码和上🈺面一段的作用🥤是不使【shì bú shǐ】🔏用http1.1标准中的🎷ETag属性【shǔ xìng】
<FilesMatch "\.(js|css|ico|pdf|flv|jpg|jpeg|png|gif|mp3|mp4|swf)$"> #针对【zhēn duì】js|css|ico等后缀【děng hòu zhuì】的🎷文件进行单独设置
#Header set Expires "Thu, 15 Apr 2013 20:00:00 GMT"
Header unset Last-Modified #不使用【bú shǐ yòng】🐁http头信息【tóu xìn xī】💺中的🎷Last-Modified属性【shǔ xìng】,Last-Modified是指文【shì zhǐ wén】⏪件最后【jiàn zuì hòu】修改时🎶间
Header append Cache-Control "public" #设置为可被任何缓存区缓存
</FilesMatch>
</IfModule>
|
上面的配置【de pèi zhì】是我自己【wǒ zì jǐ】🦋的服务【de fú wù】器上正在使用的配置【de pèi zhì】方法,在这里与大家🗞分享一下🍵,代码不【dài mǎ bú】会有错📋,最后不【zuì hòu bú】🌥要忘记重启apache服务器哦🔙!
如果有apache高人有【gāo rén yǒu】更好的配置【pèi zhì】,请指教🐯一下🥌!
如果用👪的虚拟主机【zhǔ jī】,而虚拟【ér xū nǐ】主机支【zhǔ jī zhī】持.htaccess,则可以🎮将上面的代码放到🍼.htaccess文件中【wén jiàn zhōng】🎶。