精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

高性能WEB開(kāi)發(fā)之JS、CSS的合并壓縮

開(kāi)發(fā) 前端
本篇文章主要討論下目前JS,CSS 合并、壓縮、緩存管理存在的一些問(wèn)題,然后分享下自己項(xiàng)目中用到的1個(gè)處理方案,并提供1個(gè)實(shí)例下載。

存在的問(wèn)題:

合并、壓縮文件主要有2方面的問(wèn)題:

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

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

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

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

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

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

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

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

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

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)目中的處理方案:

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

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

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

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

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

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

# 把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)如下圖:

JS、CSS的合并、壓縮、緩存管理

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

  1. <%@page contentType="text/html" pageEncoding="UTF-8"%> 
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
  3. <% boolean isDev = false;  // 是否開(kāi)發(fā)環(huán)境%> 
  4. <html> 
  5.     <head> 
  6.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  7.         <title>JSP Page</title> 
  8.         <% if(isDev){ %> 
  9.         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2.js"></script> 
  10.         <script type="text/javascript" src="<%=request.getContextPath() %>/js/1.js"></script> 
  11.         <script type="text/javascript" src="<%=request.getContextPath() %>/js/2.js"></script> 
  12.         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/1.css" /> 
  13.         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/2.css" /> 
  14.         <% }else{ %> 
  15.         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2.js"></script> 
  16.         <script type="text/javascript" src="<%=request.getContextPath() %>/js/all.js"></script> 
  17.         <link type="text/css" rel="stylesheet"  href="<%=request.getContextPath() %>/css/all.css" /> 
  18.         <% } %> 
  19.     </head> 
  20.     <body> 
  21.         <h1 class="c1">Hello World!</h1> 
  22.     </body> 
  23. </html> 

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

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

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

實(shí)例下載:猛擊此處下載

系列文章:

高性能WEB開(kāi)發(fā)之減少請(qǐng)求、響應(yīng)的數(shù)據(jù)量

高性能WEB開(kāi)發(fā)之如何減少請(qǐng)求數(shù)

高性能WEB開(kāi)發(fā)之如何加載JavaScript

高性能WEB開(kāi)發(fā)之圖片篇

高性能WEB開(kāi)發(fā)之Web性能測(cè)試工具推薦

高性能WEB開(kāi)發(fā)之HTTP服務(wù)器

責(zé)任編輯:陳貽新 來(lái)源: BearRui的博客
相關(guān)推薦

2011-04-27 10:57:29

高性能web開(kāi)發(fā)

2011-04-18 10:16:30

WEB高性能

2011-04-07 13:53:25

Web工具

2011-04-19 11:06:03

JavaScriptweb

2011-10-18 13:58:32

高性能web

2011-04-21 09:59:48

WEBjavascript

2011-04-07 13:39:24

WebHTTP

2013-09-10 16:16:19

移動(dòng)網(wǎng)站性能優(yōu)化移動(dòng)web

2011-06-14 09:27:43

高性能WEB開(kāi)發(fā)

2011-04-21 10:47:29

Webjavascript

2011-04-25 10:11:57

高性能web開(kāi)發(fā)

2011-04-28 09:40:26

flush高性能Web開(kāi)發(fā)

2009-07-30 10:28:56

Web高性能開(kāi)發(fā)

2016-08-23 14:37:21

2016-11-28 09:19:27

2013-06-19 09:20:53

Web開(kāi)發(fā)Web性能優(yōu)化高性能

2013-08-16 14:43:14

高性能移動(dòng)Web移動(dòng)Web站點(diǎn)移動(dòng)Web

2013-09-10 17:13:57

移動(dòng)網(wǎng)站性能優(yōu)化移動(dòng)web

2014-03-19 14:34:06

JQuery高性能

2019-03-14 15:38:19

ReactJavascript前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品精品国产一区二区| 亚洲一区站长工具| 国产a区久久久| 91av视频在线免费观看| 蜜桃传媒一区二区亚洲av| 天天免费亚洲黑人免费| 中文字幕制服丝袜成人av| 国产高清自拍一区| 一级黄色片网站| 亚洲午夜电影| 国产亚洲免费的视频看| 欧美日韩理论片| 亚洲精品成人图区| 亚洲欧美日韩电影| 欧美日韩在线高清| 国产麻豆免费视频| 久久精品国语| 久久久亚洲精选| 岛国片在线免费观看| 极品尤物一区| 91精品一区二区三区久久久久久| 国产精品无码av在线播放| 日本三级在线视频| 久久午夜羞羞影院免费观看| 亚洲综合大片69999| 日韩精品一区不卡| 亚洲乱码视频| 久色乳综合思思在线视频| 日本少妇高潮喷水xxxxxxx| 亚洲精品aⅴ| 7777精品伊人久久久大香线蕉完整版 | 国产精品久久久久一区二区三区共| 风间由美久久久| 91激情在线观看| 视频在线观看91| 97**国产露脸精品国产| 国产一级二级毛片| 在线一区电影| 久久久999精品视频| av网在线播放| 欧美男同视频网| 日韩精品中文字幕在线观看| 国产精品一区二区人妻喷水| 亚洲综合色婷婷在线观看| 欧美精品v国产精品v日韩精品| 亚洲 中文字幕 日韩 无码| 亚洲精品福利电影| 欧美日韩性视频在线| 免费人成自慰网站| 日本高清在线观看视频| 亚洲精品久久久蜜桃| 国产一区一区三区| 国产理论在线观看| 亚洲女与黑人做爰| 超级碰在线观看| 日本在线视频www鲁啊鲁| 亚洲欧美视频一区| 欧美一级特黄aaaaaa在线看片| 激情成人四房播| 亚洲免费av网站| 日韩亚洲欧美一区二区| 青春草视频在线观看| 亚洲一区二区不卡免费| 精品久久久久久无码中文野结衣| 丰乳肥臀在线| 黑人极品videos精品欧美裸| 人妻精品无码一区二区三区| 日韩新的三级电影| 欧美日韩精品久久久| 自拍一级黄色片| 国产乱论精品| 亚洲精品一区二区三区婷婷月| 国产色视频一区二区三区qq号| 久久av影视| 日韩有码在线播放| 欧美精品一区二区成人| 中文一区二区| 国产精品福利观看| 国产欧美综合视频| 成人激情视频网站| 日韩欧美亚洲v片| 麻豆影院在线| 香蕉成人啪国产精品视频综合网 | 日本一二三区在线观看| 国内精品99| 日本精品免费一区二区三区| 在线免费看91| 粉嫩嫩av羞羞动漫久久久 | 国产日韩精品在线| 精品人妻伦一二三区久久| 成人激情视频网站| 日韩中文字幕一区二区| av在线免费观看网址| 精品电影在线观看| 日韩中文字幕a| 这里视频有精品| 国产丝袜一区视频在线观看| 97在线观看视频免费| 亚洲视频碰碰| 国产精品美女主播| 懂色av蜜臀av粉嫩av分享吧 | 二区三区四区视频| 亚洲另类视频| 亚洲自拍偷拍在线| 国产一区二区三区福利| 夜夜夜精品看看| 五月婷婷狠狠操| 97青娱国产盛宴精品视频| 在线视频免费一区二区| 久久99久久久| 另类小说欧美激情| 九色91在线视频| 黄色免费在线观看| 色偷偷久久人人79超碰人人澡| www.五月天色| 精品国产乱码久久久| 久久久久久久久久久久av| 在线观看国产小视频| caoporen国产精品视频| 伊人色综合久久天天五月婷| 一根才成人网| 亚洲成人激情视频| 欧美视频www| 免费成人av资源网| 欧美一区国产一区| 亚洲啊v在线| 亚洲国产精品女人久久久| 丝袜 亚洲 另类 欧美 重口| 蜜臀av亚洲一区中文字幕| 精品久久久久久综合日本| 日韩精品卡一| 精品国产一区二区三区四区四| 波兰性xxxxx极品hd| 日韩主播视频在线| 欧美不卡三区| 全亚洲第一av番号网站| 亚洲精品成a人在线观看| 久久免费视频精品| 国产精品一区二区在线观看不卡| 一区二区三区四区| 欧美成人三级| www.欧美免费| 国产精品毛片一区二区在线看舒淇| 国产亚洲1区2区3区| 日本三级免费观看| 一本色道久久综合亚洲精品酒店 | 91在线视频观看| 国产www免费| 欧美a大片欧美片| 国产91av在线| 青青草免费在线视频| 欧美日韩综合视频| 国精品无码人妻一区二区三区| 国产精品免费看| 欧美国产一区二区在线| 日韩性xxx| 中文字幕欧美日韩va免费视频| 凹凸精品一区二区三区| 国产精品丝袜91| 国产精品久久久久久久久动漫| 亚洲永久激情精品| 日韩三区四区| 久久久精品国产网站| a在线观看免费| 亚洲高清三级视频| 精品国产av色一区二区深夜久久 | 国产又粗又黄又爽视频| 一区免费观看视频| 亚洲国产日韩在线一区| 狠狠88综合久久久久综合网| 狠狠久久综合婷婷不卡| 久九九久频精品短视频| 一本色道久久88综合日韩精品| 中文字幕乱码人妻二区三区| 亚洲欧洲成人精品av97| 俄罗斯女人裸体性做爰| 一本久久知道综合久久| 日韩精品在在线一区二区中文| 国产一区高清| 欧美福利在线观看| 三级无遮挡在线观看| 欧美视频一区二区在线观看| 久久国产精品国语对白| 成人av在线网| 超碰在线播放91| 欧美久久99| 日韩一区二区电影在线观看| 欧美专区一区| 热久久这里只有| 欧美成人hd| 亚洲精品二三区| 亚洲中文字幕在线一区| 亚洲综合在线五月| 谁有免费的黄色网址| 国产精品一区二区久久不卡 | 精品日本视频| 欧美激情影音先锋| 超碰免费在线观看| 精品毛片乱码1区2区3区| 亚洲欧美一区二区三区在线观看| 亚洲欧洲色图综合| 三级黄色片网站| 狠狠v欧美v日韩v亚洲ⅴ| 欧美变态另类刺激| 欧美一区免费看| 另类小说视频一区二区| 欧美亚洲黄色片| 色婷婷亚洲mv天堂mv在影片| 国产伦精品一区二区三区视频孕妇| 网友自拍亚洲| 国模精品视频一区二区三区| 3d成人动漫在线| 精品一区二区三区四区| 午夜精品一区二区三| 欧美日韩中文国产| 黄色一级片免费看| 亚洲精品五月天| 青青草自拍偷拍| 91在线播放网址| 少妇精品无码一区二区| 另类欧美日韩国产在线| 亚洲国产精品久久久久爰色欲| 国模大胆一区二区三区| 在线丝袜欧美日韩制服| 国产成人影院| 狠狠综合久久av| 日韩欧洲国产| 2014亚洲精品| gogo大尺度成人免费视频| 国产成人高清激情视频在线观看 | 午夜久久久影院| 欧美激情精品久久| 一区在线播放视频| 精品伦精品一区二区三区视频密桃 | 天堂а√在线8种子蜜桃视频| 欧美大片日本大片免费观看| 国产露脸国语对白在线| 欧美日韩精品欧美日韩精品一| 国产第一页在线观看| 疯狂欧美牲乱大交777| 日本系列第一页| 亚洲成国产人片在线观看| 粉嫩av性色av蜜臀av网站| 成人欧美一区二区三区黑人麻豆 | 色综合久久久久综合99| 成人午夜淫片100集| 精品二区三区线观看| 久久无码精品丰满人妻| 亚洲精品福利视频网站| 加勒比婷婷色综合久久| 一区二区三区四区蜜桃| 毛片aaaaa| 亚洲狠狠爱一区二区三区| 久久亚洲国产成人精品性色| 亚洲自拍偷拍麻豆| 国产网友自拍视频| 亚洲18女电影在线观看| 日本午夜精品理论片a级app发布| 午夜激情一区二区三区| 久久艹免费视频| 在线看不卡av| 亚洲中文字幕在线一区| 91精品国产高清一区二区三区蜜臀| 国产免费高清视频| 欧美成人性战久久| 色窝窝无码一区二区三区成人网站| 亚洲精品第一页| 成人在线免费视频| 久久久精品2019中文字幕神马| 手机在线免费av| 7m精品福利视频导航| 欧美一区久久久| 91在线观看免费高清| 成人性生交大片免费看96| 久久综合狠狠综合久久综青草| 国产亚洲欧美日韩在线观看一区二区| 亚欧精品在线| 欧美在线播放| 777久久久精品一区二区三区 | 国产大片精品免费永久看nba| 91久久久久久白丝白浆欲热蜜臀| 国产欧美一区二区三区四区| 久久九九精品视频| 久久福利电影| 国产精品久久久久久麻豆一区软件| 在线观看18视频网站| 国产欧美日本| 日韩成人精品视频在线观看| 国产成人精品免费看| 人妻熟女aⅴ一区二区三区汇编| 日本一区二区成人在线| 久久高清无码视频| 欧美性大战久久久久久久| 精品久久国产视频| 亚洲欧美国产va在线影院| 麻豆传媒在线免费| 欧美做受高潮电影o| 国产高清亚洲| 欧洲亚洲一区二区| 在线看片一区| 视频免费1区二区三区| 99久久精品一区| 在线看的片片片免费| 色婷婷综合久久久中文字幕| 国产老女人乱淫免费| 亚洲天堂成人在线| 国产丝袜精品丝袜| 91精品国产自产在线老师啪| 日韩大片在线免费观看| 男人天堂成人网| 男女男精品网站| 偷拍女澡堂一区二区三区| 亚洲精品乱码久久久久| 影音先锋国产在线| 日韩成人在线播放| 午夜av在线免费观看| 国产精品网站入口| 视频一区欧美| 国产高清av在线播放| 国产在线精品视频| 毛片aaaaaa| 色婷婷久久久综合中文字幕| 人妻无码中文字幕| 久久视频精品在线| 福利一区在线| 日本在线观看不卡| 免费视频久久| 黄色激情在线观看| 一区二区三区**美女毛片| 国产精品一区二区黑人巨大| 亚洲视屏在线播放| 成人美女大片| 免费观看成人在线| 国产日韩欧美一区二区三区在线观看| 69亚洲乱人伦| 亚洲国产日韩a在线播放性色| 99热这里是精品| 久久艳片www.17c.com | 爱福利在线视频| 99在线视频首页| 欧美成人日韩| 无码人妻一区二区三区精品视频| 亚洲免费伊人电影| 国产伦理一区二区| 另类视频在线观看| 欧美区一区二区| 九一免费在线观看| 高清在线不卡av| 国产大片中文字幕| 亚洲成人av片在线观看| 成人性生交大片免费看网站| 成人精品一二区| 极品裸体白嫩激情啪啪国产精品| zjzjzjzjzj亚洲女人| 亚洲国产一区视频| 日本精品久久久久久| 97视频在线免费观看| 亚洲激情播播| 国产又大又黄又粗的视频| 国产精品国产自产拍高清av王其| 伊人网中文字幕| 免费91在线视频| 国内精品麻豆美女在线播放视频 | 亚洲性视频网站| 999国产精品亚洲77777| 亚洲va韩国va欧美va精四季| 日韩av在线播放中文字幕| 啪啪一区二区三区| 欧美一卡2卡三卡4卡5免费| 色在线视频网| 久久人人97超碰人人澡爱香蕉| 久久国产直播| 国产在线免费看| 精品av综合导航| 成人线上视频| 一区二区三区日韩视频| 国产999精品久久| 婷婷激情五月网| 日韩有码在线观看| av综合网站| 精品久久久久久中文字幕2017| 亚洲欧洲精品一区二区精品久久久 | 神马午夜精品91| 亚洲精品黄网在线观看| 91看片一区| 黄色片免费在线观看视频| 久久综合久久久久88| 一二区在线观看| 国语自产精品视频在线看一大j8 | chinese少妇国语对白| 亚洲欧美自拍偷拍| 天天躁日日躁狠狠躁喷水| 国产精品久久视频| 亚洲午夜极品| 18精品爽国产三级网站| 亚洲精品一区二区三区99| 99久久er| 日本中文字幕网址| 亚洲日本青草视频在线怡红院 | 日本午夜激情视频|