我個人認(rèn)為,網(wǎng)站靜態(tài)化,并不一定非要靠寫代碼實現(xiàn)整站HTML的生成,有些工具能提供非常好的緩存機(jī)制。在Web開發(fā)中,最關(guān)鍵的瓶頸往往在于數(shù)據(jù)庫,減少數(shù)據(jù)庫的讀寫壓力,就是緩存的主要作用。在可以提供緩存功能的工具中,應(yīng)用層的可以用Memcache和Redis,前端緩存可以用Varnish和Nginx的提供的緩存功能,當(dāng)然還要合理利用304狀態(tài)碼。以Memcache和Redis為例,它們的作用是讓你能夠把數(shù)據(jù)庫的數(shù)據(jù)保存在內(nèi)存或者是磁盤文件上,這樣每次請求過來你仍然可以通過程序來控制業(yè)務(wù)邏輯,但是極大地減少了數(shù)據(jù)庫的訪問,性能自然提升。而對于Varnish和Nginx這樣具有反向代理功能的工具來說,它們的作用就是將第一次動態(tài)請求的頁面緩存起來,在過期時間內(nèi),接下來的請求返回的都是緩存里的數(shù)據(jù),不再向后端服務(wù)器發(fā)起請求。而對于你后面的問題,閱讀次數(shù),評論這些靜態(tài)中常變的部分,使用不同工具的情況下也有不同的解決方法。文章的閱讀次數(shù)——使用應(yīng)用層緩存的情況下,可以先把閱讀次數(shù)寫入到緩存中,在后臺寫個腳本定期從緩存中讀出來寫入到數(shù)據(jù)庫里。使用前端緩存的情況,可以用Ajax異步調(diào)用把閱讀次數(shù)寫入到數(shù)據(jù)庫中,如果寫壓力大的話,就像使用應(yīng)用層緩存一樣,先寫入緩存,再寫腳本定期讀。評論——同學(xué)你知道有兩個東西叫Disqus和多問嗎?如果你要手動管理評論的話,使用應(yīng)用層緩存的情況下,就像平常一樣讀寫即可,只需要做好緩存管理;如果用前端緩存的話,以Varnish為例,讀的時候可以用ESITag這個特性,就像Apache的SSI一樣,寫評論的話,還是要用Ajax來異步寫入,當(dāng)然,你得在Varnish里設(shè)置不緩存POST提交。歡迎深入討論。