??? 最近做的Ext項(xiàng)目Ext的插件都比較大,對(duì)于網(wǎng)頁(yè)的瀏覽速度也是非常不容樂觀的,于是就需要對(duì)所加載的js文件進(jìn)行優(yōu)化,其中一個(gè)方法就是對(duì)于較大的js文件可以進(jìn)行壓縮。壓縮成gzjs格式,但是gzjs后綴名的文件又不能被瀏覽器所認(rèn)識(shí),得需要對(duì)服務(wù)器端做些處理。
一、將js格式文件壓縮成gzjs格式。使用gzip.exe打包壓縮后的JS文件,最后生成xx.js.gz,把xx.js.gz文件改成xx.gzjs。壓縮實(shí)例: ext-all.js (610KB), gzip.exe壓縮后為ext-all.gzjs(168KB)。
附:gzip使用方法,在命令行下輸入: gzip -9 ext-all.js ext-all.js.gz
修改ext-all.js.gz的后綴名ext-all.gzjs(注:也可以通過gzip -h命令查看幫助)
下載地址:http://www.gzip.org
二、在項(xiàng)目web.xml中加入過濾器。
代碼如下:
三、加入過濾類。
代碼如下:
四、在需導(dǎo)入js的頁(yè)面head里面添加導(dǎo)入文件,如:<script type="text/javascript"
src="js/ext3/ext-all.gzjs"></script>
至此已經(jīng)大功告成,在我這邊測(cè)試通過,如大家在運(yùn)行過程中有問題,請(qǐng)發(fā)信息給我。
一、將js格式文件壓縮成gzjs格式。使用gzip.exe打包壓縮后的JS文件,最后生成xx.js.gz,把xx.js.gz文件改成xx.gzjs。壓縮實(shí)例: ext-all.js (610KB), gzip.exe壓縮后為ext-all.gzjs(168KB)。
附:gzip使用方法,在命令行下輸入: gzip -9 ext-all.js ext-all.js.gz
修改ext-all.js.gz的后綴名ext-all.gzjs(注:也可以通過gzip -h命令查看幫助)
下載地址:http://www.gzip.org
二、在項(xiàng)目web.xml中加入過濾器。
代碼如下:
- < filter > ? ??
- ?????? < filter-name > GzipJsFilter </ filter-name > ? ??
- ?????? < filter-class > net.kangsoft.util.GzipJsFilter </ filter-class > ? ??
- ?????? < init-param > ? ??
- ?????????? < param-name > headers </ param-name > ? ??
- ?????????? < param-value > Content-Encoding = gzip </ param-value > ? ??
- ?????? </ init-param > ??
- </ filter > ??
- ??? < filter-mapping > ??
- ??? < filter-name > GzipJsFilter </ filter-name > ??
- ??? < url-pattern > *.gzjs </ url-pattern > ??
- </ filter-mapping > ??
<filter> <filter-name>GzipJsFilter</filter-name> <filter-class>net.kangsoft.util.GzipJsFilter</filter-class> <init-param> <param-name>headers</param-name> <param-value>Content-Encoding=gzip</param-value> </init-param> </filter> <filter-mapping> <filter-name>GzipJsFilter</filter-name> <url-pattern>*.gzjs</url-pattern> </filter-mapping>
三、加入過濾類。
代碼如下:
- package ?net.kangsoft.util; ??
- ??
- import ?java.io.IOException; ??
- import ?java.util.HashMap; ??
- import ?java.util.Iterator; ??
- import ?java.util.Map; ??
- import ?java.util.Map.Entry; ??
- import ?java.util.Set; ??
- import ?javax.servlet.Filter; ??
- import ?javax.servlet.FilterChain; ??
- import ?javax.servlet.FilterConfig; ??
- import ?javax.servlet.ServletException; ??
- import ?javax.servlet.ServletRequest; ??
- import ?javax.servlet.ServletResponse; ??
- import ?javax.servlet.http.HttpServletRequest; ??
- import ?javax.servlet.http.HttpServletResponse; ??
- ??
- public ? class ?GzipJsFilter ??
- implements ?Filter ??
- { ??
- Map?headers?=? new ?HashMap(); ??
- ??
- public ? void ?destroy()?{?} ??
- ??
- public ? void ?doFilter(ServletRequest?req,?ServletResponse?res,?FilterChain?chain) ??
- ??
- throws ?IOException,?ServletException?{ ??
- ???? if ?(req? instanceof ?HttpServletRequest) ??
- ??????doFilter((HttpServletRequest)req,?(HttpServletResponse)res,?chain); ??
- ???? else ??
- ??????chain.doFilter(req,?res); ??
- } ??
- ??
- public ? void ?doFilter(HttpServletRequest?request,?HttpServletResponse?response, ??
- ??
- FilterChain?chain) ??
- ???? throws ?IOException,?ServletException ??
- { ??
- ????request.setCharacterEncoding( "UTF-8" ); ??
- ???? for ?(Iterator?it?=? this .headers.entrySet().iterator();?it.hasNext();?)?{ ??
- ??????Map.Entry?entry?=?(Map.Entry)it.next(); ??
- ??????response.addHeader((String)entry.getKey(),?(String)entry.getValue()); ??
- ????} ??
- ????chain.doFilter(request,?response); ??
- } ??
- ??
- public ? void ?init(FilterConfig?config)? throws ?ServletException?{ ??
- ????String?headersStr?=?config.getInitParameter( "headers" ); ??
- ????String[]?headers?=?headersStr.split( "," ); ??
- ???? for ?( int ?i?=? 0 ;?i?<?headers.length;?++i)?{ ??
- ??????String[]?temp?=?headers[i].split( "=" ); ??
- ?????? this .headers.put(temp[ 0 ].trim(),?temp[ 1 ].trim()); ??
- ????} ??
- } ??
- }??
package net.kangsoft.util; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GzipJsFilter implements Filter { Map headers = new HashMap(); public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { if (req instanceof HttpServletRequest) doFilter((HttpServletRequest)req, (HttpServletResponse)res, chain); else chain.doFilter(req, res); } public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); for (Iterator it = this.headers.entrySet().iterator(); it.hasNext(); ) { Map.Entry entry = (Map.Entry)it.next(); response.addHeader((String)entry.getKey(), (String)entry.getValue()); } chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { String headersStr = config.getInitParameter("headers"); String[] headers = headersStr.split(","); for (int i = 0; i < headers.length; ++i) { String[] temp = headers[i].split("="); this.headers.put(temp[0].trim(), temp[1].trim()); } } }
四、在需導(dǎo)入js的頁(yè)面head里面添加導(dǎo)入文件,如:<script type="text/javascript"
src="js/ext3/ext-all.gzjs"></script>
至此已經(jīng)大功告成,在我這邊測(cè)試通過,如大家在運(yùn)行過程中有問題,請(qǐng)發(fā)信息給我。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
