欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

高性能WEB開發(fā)怎么實(shí)現(xiàn)JS、CSS的合并壓縮

本篇內(nèi)容介紹了“高性能WEB開發(fā)怎么實(shí)現(xiàn)JS、CSS的合并壓縮”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)呂梁免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

存在的問題:

合并、壓縮文件主要有2方面的問題:

1. 每次發(fā)布的時(shí)候需要運(yùn)行一下自己寫的bat文件或者其他程序把文件按照自己的配置合并和壓縮。

2. 因生產(chǎn)環(huán)境和開發(fā)環(huán)境需要加載的文件不一樣,生產(chǎn)環(huán)境為了需要加載合并、壓縮后的文件,而開發(fā)環(huán)境為了修改、調(diào)試方便,需要加載非合并、壓縮的文件,所以我們常常需要在JSP中類似與下面的判斷代碼:

<c:if test="${env=='prod'}">    <script type="text/javascript" src="/js/all.js"></script> </c:if> <c:if test="${env=='dev'}">    <script type="text/javascript" src="/js/1.js"></script>    <script type="text/javascript" src="/js/2.js"></script>    <script type="text/javascript" src="/js/3.js"></script> </c:if>

緩存問題:在現(xiàn)在JS滿天飛的時(shí)代,大家都知道緩存能帶來的巨大好處,但緩存確實(shí)非常麻煩的一個(gè)問題,相信很多人曾經(jīng)歷過下面的情況:為了讓程序更快,在服務(wù)器上為JS加上緩沖5天的代碼,但產(chǎn)品更新后第二天就接到電話說系統(tǒng)出錯(cuò),詳細(xì)了解后就發(fā)現(xiàn)是緩存引起的,讓用戶刪除緩存后就會(huì)OK。原因很簡(jiǎn)單,就是你JS已經(jīng)修改了,但用戶還在使用緩存中的老JS。在經(jīng)歷幾次這種情況,被領(lǐng)導(dǎo)數(shù)落了幾次后。沒辦法只能把JS的緩沖去掉,或者改成8個(gè)小時(shí)??蛇@樣就完全失去了緩存的優(yōu)勢(shì)了,哪我們到底需要解決哪些問題才能讓我們使用緩沖順心如意了?

1. 如何在修改了某個(gè)JS后,自動(dòng)把所有引用該JS頁面的代碼中加上1個(gè)版本號(hào)?

2. 該如何生成版本號(hào),根據(jù)什么來產(chǎn)生這個(gè)版本號(hào)。

可能有人為了解決上面的緩存問題,寫了個(gè)JSP標(biāo)簽,通過標(biāo)簽讀取JS、css文件的修改時(shí)間來作為版本號(hào),從而來解決上面2個(gè)問題。但這種方法有下面幾個(gè)缺點(diǎn):

1. 每次請(qǐng)求都要通過標(biāo)簽讀取讀取文件的修改時(shí)間,速度慢。當(dāng)然你可以把文件的修改時(shí)間放到緩存中,這樣也會(huì)加到了內(nèi)存使用量。

2. 在HTML靜態(tài)頁面中用不了

3. 如果你們公司是如下的部署發(fā)布方式(我們公司就是這樣),則會(huì)失效。每次發(fā)布,不是直接覆蓋之前的WEB目錄,運(yùn)維的為的發(fā)布方便,要求每次發(fā)布直接給他們1個(gè)war包,他們會(huì)把之前WEB目錄整個(gè)刪除,然后上傳現(xiàn)在的war包,這樣就導(dǎo)致程序運(yùn)行后,所有文件的***修改時(shí)間都是解壓war的時(shí)間。

分享自己項(xiàng)目中的處理方案:

為了解決上面討論過的問題,在下寫了1個(gè)如下的組件,組件中根據(jù)我們自己的實(shí)際情況使用了文件大小來做為文件的版本號(hào),雖然在文件修改很小(比如把字符a改成b),可能文件大小并沒有變,導(dǎo)致版本號(hào)也不會(huì)變。

但這種機(jī)率還是非常低的。當(dāng)然如果你覺的使用文件修改時(shí)間作為版本號(hào)適合你,只需要修改一行代碼就行,下面看下這個(gè)組件的處理流程(本來想用流程圖表達(dá),***還是覺的文字來的直白寫):

1. 程序啟動(dòng)(contextInitialized)

2. 搜索程序目錄下的所有merge.txt文件,根據(jù)merge.txt文件的配置合并文件, merge.txt文件實(shí)例如下:

# 文件合并配置文件,多個(gè)文件以|隔開,以/開頭的表示從根目錄開始,

# 空格之后的文件名表示合并之后的文件名

# 把1,2,3合并到all文件中

1.js|2.js|3.js all.js

#合并CSS

/css/mian.css|/css/common.css all.css

3. 搜索程序目錄下所有JS,CSS文件(包括合并后的),每個(gè)文件都?jí)嚎s后生成對(duì)應(yīng)的1個(gè)新文件。

4. 搜索程序目錄下所有JSP,html文件,把所有JS,css的引用代碼改成壓縮后并加了版本號(hào)的引用。

實(shí)例:

實(shí)例的文件結(jié)構(gòu)如下圖:

高性能WEB開發(fā)怎么實(shí)現(xiàn)JS、CSS的合并壓縮

看JSP原始代碼(程序運(yùn)行前):

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> <% boolean isDev = false;  // 是否開發(fā)環(huán)境%> <html>     <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">         <title>JSP Page</title>         <% if(isDev){ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2.js"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/1.js"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/2.js"></script>         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/1.css" />         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/2.css" />         <% }else{ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2.js"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/all.js"></script>         <link type="text/css" rel="stylesheet"  href="<%=request.getContextPath() %>/css/all.css" />         <% } %>     </head>     <body>         <h2 class="c1">Hello World!</h2>     </body> </html>

程序運(yùn)行后JSP的代碼:

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%      boolean isDev = false;  // 是否開發(fā)環(huán)境  %> <html>     <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">         <title>JSP Page</title>         <% if(isDev){ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2-3gmin.js?99375"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/1-3gmin.js?90"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/2-3gmin.js?91"></script>         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/1-3gmin.css?35" />         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/2-3gmin.css?18" />         <% }else{ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2-3gmin.js?99375"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/all-3gmin.js?180"></script>         <link type="text/css" rel="stylesheet"  href="<%=request.getContextPath() %>/css/all-3gmin.css?53" />         <% } %>     </head>     <body>         <h2 class="c1">Hello World!</h2>     </body> </html>

加3gmin后綴的文件全部是程序啟動(dòng)時(shí)自動(dòng)生成的。

“高性能WEB開發(fā)怎么實(shí)現(xiàn)JS、CSS的合并壓縮”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前名稱:高性能WEB開發(fā)怎么實(shí)現(xiàn)JS、CSS的合并壓縮
文章出自:http://aaarwkj.com/article2/jeggoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)、企業(yè)建站網(wǎng)站設(shè)計(jì)公司

廣告

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

手機(jī)網(wǎng)站建設(shè)
国产在线观看一区二区三区精品| 成人又黄又爽大片在线观看| 国产精品兄妹在线观看91| 欧美精品色精品免费观看| 国产一区二区黄色网页| 九九九热在线观看视频| 免费看国产一级黄色大片| 久久se精品一区精品二区国产| 中文字幕av一区二区人妻| 丰满高潮少妇在线观看| 高清免费欧美大片在线观看| 婷婷国产成人久久精品激情| 日韩精品欧美成人高清一区二区| 日韩中文字幕不卡免费| 国产夫妻一区二区三区| 日韩在线视频观看一区二区三区 | 国产亚洲一区二区自拍视频| 国产一区二区主播不卡| 四虎精品视频在线播放| 日本少妇激情后入嗯啊| 亚洲av日韩av一区| 国产精品欧美久久久久久| 国产超码片内射在线| 精品国产一区二区三区四不卡在线| 国产欧美精品久久三级| 天堂社区人妻在线亚洲| 国产日韩欧美高清免费视频| 超碰国产熟女一区二区三区| 国产一区二区三区自拍| 草逼免费在线观看视频| 日韩黄国产一区二区三| av免费在线观看大全| 91亚洲精品一区二区三区| 亚洲精品成人综合色在线| 日韩精品免费一区二区三区| 欧美一级特黄大片做受另类| 欧美日韩国产激情另类| 少妇一区二区三区免费| 国产综合永久精品日韩鬼片| 久久午夜视频在线观看| 久久精品亚洲毛片美女极品|