基於urlrewrite的網頁靜態化解決方案

2021-08-30 23:57:24 字數 2774 閱讀 1722

在互連網應用中,提高頁面展示速度和針對搜尋引擎優化都是必須要考慮和解決的問題,而解決這兩個問題就必須要盡可能實現頁面靜態化和url重寫.靜態化的頁面是提高伺服器效能最有效的手段之一了,而url重寫又是seo優化的首要步驟.

url重寫大部分都在http伺服器端操作如apache,但是apache又不能根據引數的不同快取不同的頁面,所以大部分jsp頁面都無法被快取。google之後發現有個urlrewrite可以在tomcat中重寫url, 看過原始碼之後,決定改造一下,在重寫url的同時將內容快取至磁碟或記憶體,這樣不是一舉兩得嗎。

(後來又發現,原來還有更好的解決方法[url]

主要**如下:

public void dofilter(servletrequest request, servletresponse response,

filterchain chain) throws ioexception, servletexception

log.info("handle request: {}", originalurl);

originalurl = urldecoder.decode(originalurl, "utf-8");

cache cache = memorycache.get(originalurl);

if (cache != null && cache.isvalid()) ", originalurl);

response.setcontenttype("text/html;charset=utf-8");

response.getwriter().print(cache.getcontent());

return;

} else if (cache != null) ", cache

.gettargeturl());

cache.setcontent(responsebody);

memorycache.put(originalurl, cache);

}return;

}string targeturl = null;

rule matchedrule = null;

for (rule rule : rules)

}if (targeturl == null) ", originalurl);

chain.dofilter(request, response);

return;

} else to {}", originalurl, targeturl);

requestdispatcher rd = request.getrequestdispatcher(targeturl);

rd.forward(request, response);

return;

} else if (cachetype == 1) ", targeturl);

response.setcontenttype("text/html;charset=utf-8");

string cachecontent = fileutils.readfiletostring(cachefile,

"utf-8");

response.getwriter().print(cachecontent);

return;

} else ", targeturl);

fileutils.writestringtofile(cachefile, responsebody,

"utf-8");

}return;

}} else if (cachetype == 2) ", targeturl);

cache memcache = new cache();

memcache.settimeout(matchedrule.gettimeout());

memcache.setcontent(responsebody);

memcache.settargeturl(targeturl);

memorycache.put(originalurl, memcache);

}return;}}

}

使用也很簡單:

[b]在web.xml中增加[/b]

htmlcache

com.hanvon.htmlcache.htmlcachefilter

loglevel

debug

cachedir

/data/htmlcache/

[b]在web-inf下新建配置檔案htmlcache.xml[/b]

<?xml version="1.0" encoding="utf-8"?>

/index.html

/home/index.html

/category/([0-9]+).html

/getbooklistbycategory.action?clickedcategoryid=$1

/book/([0-9]+).html

/showbookdetail.action?bookid=$1

/search/(.*)/(.*).html

/searchbookbyconditionlike.action?searchname=$2&searchtype=$1

改造之後的urlrewrite可以將/book/234.html對映為/book.jsp?id=234,並且快取至磁碟或記憶體,測試結果還不錯,簡單實用

UrlRewrite 網頁靜態化

估計很多搞開發的都想過這樣乙個問題,當位址列顯示了一些id等敏感資訊時,會覺得很彆扭,反正我就是,今天就藉機研究了下urlrewrite,雖然之前使用鍋freemarket來做靜態化網頁處理,但是覺得不方便。進入正題 配置web.xml urlrewritefilter org.tuckey.web...

基於bootstrap的網頁開發

1.html5shiv.js的作用是?html5shiv主要解決html5提出的新的元素不被ie6 8識別,這些新元素不能作為父節點包裹子元素,並且不能應用css樣式。讓css 樣式應用在未知元素上只需執行 document.createelement elementname 即可實現。html5s...

web中,url rewrite的配置

優點 掩藏真實的url以及url中可能暴露的引數,以及隱藏web使用的程式語言,提高安全性 便於搜尋引擎收錄 缺點 降低效率,影響效能。如果專案是內網使用,比如公司內部軟體,則沒有必要配置。將http localhost 8080 atfc pict getuserlist 偽裝成http loca...