網(wǎng)站靜態(tài)化的第一部分,百萬帖子頁面
不知道因?yàn)槭裁丛颍?dāng)系統(tǒng)的訪問量達(dá)到了8000IP的時(shí)候,tomcat的內(nèi)存總是會莫名其妙的增加到上限,而且到最后垃圾回收也會非常費(fèi)力,最后導(dǎo)致系統(tǒng)停止響應(yīng),我調(diào)試過各種參數(shù),包括垃圾回收策略,并行回收,修改各內(nèi)存配置的參數(shù),結(jié)果都一樣,沒辦法,絕對對這一訪問量最大的部分進(jìn)行全部靜態(tài)化。
一、靜態(tài)化要考慮三個(gè)方面的事情,
1 對SEO
能夠讓搜索引擎更方便的進(jìn)行信息采集和分類,提升其速度和準(zhǔn)確性
2 對用戶
不能影響版面的展示,不能為了速度影響了美觀和可用性
3 對維護(hù)
一些內(nèi)容可以方便的更換,比如菜單調(diào)整,連接調(diào)整,廣告位的調(diào)整等
二、最終采用了如下的方案進(jìn)行
1 使用freemarker進(jìn)行靜態(tài)化
2 將菜單,廣告位等以后可能變化的地方,使用JS進(jìn)行操作。 一些地方采用多個(gè)連續(xù)的JS,方便以后進(jìn)行整體調(diào)整。
3 通過urlrewrite 將訪問轉(zhuǎn)到靜態(tài)化后的頁面
4 通過404的錯(cuò)誤處理,對尚未靜態(tài)化的頁面進(jìn)行處理
5 靜態(tài)化時(shí),考慮到帖子量在百萬級別,為了防止一個(gè)文件夾下面有太多文件,決定根據(jù)帖子編號的末尾2位數(shù)字進(jìn)行文件夾分組,比如12345 則分配到 45這個(gè)子文件夾里面,67890 則分配到90這個(gè)文件夾里面。這樣就將帖子近似均分到100個(gè)文件夾,每個(gè)文件夾的帖子在1萬個(gè),還可以接受。如果以后帖子再多,我就再考慮分成1000個(gè)文件夾了。這個(gè)設(shè)置要為以后的擴(kuò)容留有余地。
三、具體操作
1 根據(jù)現(xiàn)有帖子頁面制作ftl的模板,里面要考慮js的腳本位置。
2 制作批量生成的程序,為減輕服務(wù)器的壓力,以某個(gè)數(shù)據(jù)庫備份為藍(lán)本,在本地完成這部分帖子的初始化,生成htm文件,然后將靜態(tài)化好的目錄整個(gè)打包上傳到服務(wù)器。
3 啟動404的處理,比較新的帖子如果沒有被靜態(tài)化,則由這個(gè)程序進(jìn)行處理
4 帖子管理程序改造,在帖子保存時(shí)自動進(jìn)行靜態(tài)化
5 啟動urlRewrite 其中比較關(guān)鍵的部分是
RewriteRule ^/view-([0-9]*?)([0-9]{2}).htm /laozizhu/$2/$1$2.htm [PT]
里面將帖子編號的最后2位單獨(dú)分組出來,作為目錄名,如果以后帖子多了,可以用最后三位來分組了。只需要再次生成帖子,然后簡單的修改這個(gè)規(guī)則即可,前臺訪問不受任何影響。
四、效果:
目前網(wǎng)站訪問量已經(jīng)達(dá)到每天7w的獨(dú)立IP,tomcat占用內(nèi)存不超過300M,系統(tǒng)線程數(shù)一直在最低的線上。
五、總結(jié)
靜態(tài)化,還是針對大訪問量的最佳方案,不是偽靜態(tài)化,而是真正的靜態(tài)化。
posted on 2009-08-11 13:20 肥仔 閱讀(168) 評論(0) 編輯 收藏 引用 所屬分類: Web-后臺