Java高并發(fā):靜態(tài)頁面生成方案
提升網(wǎng)站性能的方式有很多,例如有效的使用緩存,生成靜態(tài)頁面等等。今天要說的就是生成靜態(tài)頁面的方式。這個也是我近期一直在搞的一個問題,近期在做使用html + servlet做個人網(wǎng)站,為什么是這2個東西呢?
1、直接用servlet是為了保證網(wǎng)站能以最快的速度執(zhí)行命令個人總感覺像Struts hibernate spring之類的雖然方便但是效能帶來的損耗不太能接收
2、使用html同樣是為了保證最快的反應(yīng)速度,畢竟html 比jsp少了一層服務(wù)器執(zhí)行。速度上要快的多
一、在這里要先說一下什么是頁面靜態(tài)化:
簡單的說,我們?nèi)绻L問一個鏈接 ,服務(wù)器對應(yīng)的模塊會處理這個請求,轉(zhuǎn)到對應(yīng)的jsp界面,***生成我們想要看到的數(shù)據(jù)。這其中的缺點是顯而易見的:因為每次請求服務(wù)器都會進行處理,如果有太多的高并發(fā)請求,那么就會加重應(yīng)用服務(wù)器的壓力,弄不好就把服務(wù)器 搞down 掉了。那么如何去避免呢?如果我們把對 test.do 請求后的結(jié)果保存成一個 html 文件,然后每次用戶都去訪問 ,這樣應(yīng)用服務(wù)器的壓力不就減少了?
那么靜態(tài)頁面從哪里來呢?總不能讓我們每個頁面都手動處理吧?這里就牽涉到我們要講解的內(nèi)容了,靜態(tài)頁面生成方案… 我們需要的是自動的生成靜態(tài)頁面,當用戶訪問 ,會自動生成 test.html ,然后顯示給用戶。
二、下面我們在簡單介紹一下要想掌握頁面靜態(tài)化方案應(yīng)該掌握的知識點
1、 基礎(chǔ)- URL Rewrite
什么是 URL Rewrite 呢 ? URL 重寫。用一個簡單的例子來說明問題:輸入網(wǎng)址 ,但是實際上訪問的卻是 abc.com/test.action,那我們就可以說 URL 被重寫了。這項技術(shù)應(yīng)用廣泛,有許多開源的工具可以實現(xiàn)這個功能。
2、 基礎(chǔ)- Servlet web.xml
如果你還不知道 web.xml 中一個請求和一個 servlet 是如何匹配到一起的,那么請搜索一下 servlet 的文檔。這可不是亂說呀,有很多人就認為 /xyz/*.do 這樣的匹配方式能有效。
如果你還不知道怎么編寫一個 servlet ,那么請搜索一下如何編寫 servlet.這可不是說笑呀,在各種集成工具漫天飛舞的今天,很多人都不會去從零編寫一個 servlet了。
三、基本的方案介紹
其中,對于 URL Rewriter的部分,可以使用收費或者開源的工具來實現(xiàn),如果 url不是特別的復(fù)雜,可以考慮在 servlet 中實現(xiàn),那么就是下面這個樣子: