国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

WEB高性能開發(fā)之瘋狂的HTML壓縮

2024-09-06 12:45:43
字體:
供稿:網(wǎng)友
一般我們啟動(dòng)gzip都比較少對html啟動(dòng)gzip,因?yàn)楝F(xiàn)在的html都是動(dòng)態(tài)的,不會(huì)使用瀏覽器緩存,而啟用gzip的話每次請求都需要壓縮,會(huì)比較消耗服務(wù)器資源,對js,css啟動(dòng)gzip比較好是因?yàn)閖s,css都會(huì)使用緩存。我個(gè)人覺得的壓縮html的最大好處就是一本萬利,只要寫好了一次,以后所有程序都可以使用,不會(huì)增加任何額外的開發(fā)工作。
在“JS、CSS的合并、壓縮、緩存管理”一文中說到自己寫過的1個(gè)自動(dòng)合并、壓縮JS,CSS,并添加版本號的組件。這次把壓縮html的功能也加入到該組件中,流程很簡單,就是在程序啟動(dòng)(contextInitialized or Application_Start)的時(shí)候掃描所有html,jsp(aspx)進(jìn)行壓縮。
壓縮的注意事項(xiàng):
實(shí)現(xiàn)的方式主要是用正則表達(dá)式去查找,替換。在html壓縮的時(shí)候,主要要注意下面幾點(diǎn):
1. pre,textarea 標(biāo)簽里面的內(nèi)容格式需要保留,不能壓縮。
2. 去掉html注釋的時(shí)候,有些注釋是不能去掉的,比如:<!--[if IE 6]> ..... <![endif]-->
3. 壓縮嵌入式j(luò)s中的注釋要注意,因?yàn)榭赡茏⑨尫枙?huì)出現(xiàn)在字符串中,比如: var url = "http://www.cnblogs.com"; // 前面的//不是注釋
去掉JS換行符的時(shí)候,不能直接跟一下行動(dòng)內(nèi)容,需要有空格,考慮下面的代碼:
else
return;
如果不帶空格,則變成elsereturn。
4. jsp(aspx) 中很有可能會(huì)使用<% %>嵌入一些服務(wù)器代碼,這個(gè)時(shí)候也需要單獨(dú)處理,里面注釋的處理方法跟js的一樣。
源代碼:
下面是java實(shí)現(xiàn)的源代碼,也可以 猛擊此處 下載該代碼,相信大家都看的懂,也很容易改成net代碼:
代碼如下:
import java.io.StringReader;
import java.io.StringWriter;
import java.util.*;
import java.util.regex.*;
/*******************************************
* 壓縮jsp,html中的代碼,去掉所有空白符、換行符
* @author bearrui(ak-47)
* @version 0.1
* @date 2010-5-13
*******************************************/
public class HtmlCompressor {
private static String tempPreBlock = "%%%HTMLCOMPRESS~PRE&&&";
private static String tempTextAreaBlock = "%%%HTMLCOMPRESS~TEXTAREA&&&";
private static String tempScriptBlock = "%%%HTMLCOMPRESS~SCRIPT&&&";
private static String tempStyleBlock = "%%%HTMLCOMPRESS~STYLE&&&";
private static String tempJspBlock = "%%%HTMLCOMPRESS~JSP&&&";
private static Pattern commentPattern = Pattern.compile("<!--//s*[^//[].*?-->", Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private static Pattern itsPattern = Pattern.compile(">//s+?<", Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private static Pattern prePattern = Pattern.compile("<pre[^>]*?>.*?</pre>", Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private static Pattern taPattern = Pattern.compile("<textarea[^>]*?>.*?</textarea>", Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 天柱县| 聂荣县| 余干县| 固原市| 沁水县| 沅江市| 自治县| 九龙城区| 资阳市| 巨野县| 满洲里市| 龙江县| 区。| 伊金霍洛旗| 甘洛县| 新安县| 广宗县| 深圳市| 隆子县| 浦北县| 万山特区| 信丰县| 息烽县| 神木县| 册亨县| 剑河县| 乌什县| 东乡县| 威远县| 连南| 涟源市| 慈溪市| 南宫市| 扶余县| 大英县| 洛浦县| 安化县| 滕州市| 莲花县| 德清县| 贵定县|