淺談如何提高網(wǎng)站的訪(fǎng)問(wèn)速度
隨著(zhù)網(wǎng)絡(luò )技術(shù)的不斷發(fā)展,建站技術(shù)已經(jīng)不在局限于一些大的網(wǎng)絡(luò )技術(shù)公司了,實(shí)際上個(gè)人已經(jīng)架設自己的網(wǎng)站放到了互聯(lián)網(wǎng)上供人訪(fǎng)問(wèn)。但是隨著(zhù)訪(fǎng)問(wèn)量的不斷增大,核心問(wèn)題已經(jīng)不是頁(yè)面的美觀(guān)和使用,而是網(wǎng)站的訪(fǎng)問(wèn)速度了。網(wǎng)站訪(fǎng)問(wèn)速度的快慢對網(wǎng)站的運營(yíng)來(lái)說(shuō)是很重要的。網(wǎng)站訪(fǎng)問(wèn)速度太慢的話(huà),有一部分瀏覽者就會(huì )離開(kāi)網(wǎng)站而不會(huì )繼續等待網(wǎng)站顯示完。下面我就介紹一些提高網(wǎng)站訪(fǎng)問(wèn)速度的常用辦法。
一、前臺頁(yè)面的優(yōu)化:
簡(jiǎn)化代碼和內容
網(wǎng)速慢也是影響網(wǎng)站訪(fǎng)問(wèn)速度的原因之一。這就要求我們不要在網(wǎng)頁(yè)里面放太多的東西,關(guān)于網(wǎng)頁(yè)的文字,我們可以不進(jìn)行考慮,但是圖片和動(dòng)畫(huà)等等,就是要考慮的內容了,尤其是動(dòng)畫(huà),對網(wǎng)站的訪(fǎng)問(wèn)速度有很大影響,如果不是很必要,就不要放置太多的動(dòng)畫(huà)。簡(jiǎn)潔的頁(yè)面對訪(fǎng)問(wèn)者是很友好的。
不把大部分內容放到表格
一些不恰當的網(wǎng)頁(yè)布局會(huì )拖慢網(wǎng)站的訪(fǎng)問(wèn)速度,比如將所有的網(wǎng)頁(yè)內容放到一個(gè)表格里面(因為這樣好排版)。其實(shí)這種方式是很不好的因為表格只有在內容全部顯示完之后才會(huì )顯示出來(lái),F在頁(yè)面的制作基本都是適用div+css模式,這種模式節省代碼冗余,能大大的提高網(wǎng)頁(yè)的瀏覽速度。
二、數據庫的優(yōu)化:
很多網(wǎng)站都是動(dòng)態(tài)顯示數據,比如說(shuō):社區、sns類(lèi)網(wǎng)站等這些不能完全生成html靜態(tài)頁(yè)面,隨著(zhù)訪(fǎng)問(wèn)量的增加,對于數據庫的要求就越來(lái)越高。當發(fā)現動(dòng)態(tài)網(wǎng)站訪(fǎng)問(wèn)緩慢,可以試著(zhù)一下方法檢查并優(yōu)化。
數據庫索引:
這個(gè)是重要中的重要,數據查詢(xún)的效率是非依賴(lài)于表的索引,如果沒(méi)有好的索引甚至沒(méi)建立索引,表的數量級達到一定程度都會(huì )大大影響數據庫的執行效率,所以必須檢查所以是非建立好。對于常用的查詢(xún)條件都要建立索引,并查看數據庫查詢(xún)分析器,查看那些語(yǔ)句緩慢,對應建立索引。
給數據表瘦身:
數據表的量達到一定程度,索引就不管用了。建議一個(gè)表不要超過(guò)千萬(wàn),F在一般適用的mysql數據庫,千萬(wàn)以上的查詢(xún)效率都已經(jīng)不佳了?梢圆捎梅直矸謳斓姆绞,將一些久數據庫剝離,以減輕數據表容量上的壓力。
優(yōu)化編寫(xiě)程序中查詢(xún)的語(yǔ)句:
查詢(xún)數據庫的語(yǔ)句盡量使用最優(yōu)的語(yǔ)句進(jìn)行查詢(xún),因為有些復合查詢(xún)同樣會(huì )占用大量的數據庫開(kāi)銷(xiāo),如果執行時(shí)間就了,加上網(wǎng)站的并發(fā)量大的話(huà)很容易導致數據死鎖,從而導致網(wǎng)站的癱瘓?梢允褂么鎯^(guò)程,這樣能很好的解決這個(gè)問(wèn)題。
數據庫集群和庫表散列:
大型網(wǎng)站都有復雜的應用,這些應用必須使用數據庫,那么在面對大量訪(fǎng)問(wèn)的時(shí)候,數據庫的瓶頸很快就能顯現出來(lái),這時(shí)一臺數據庫將很快無(wú)法滿(mǎn)足應用,于是我們需要使用數據庫集群或者庫表散列。
在數據庫集群方面,很多數據庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類(lèi)似的方案,您使用了什么樣的DB,就參考相應的解決方案來(lái)實(shí)施即可。
上面提到的數據庫集群由于在架構、成本、擴張性方面都會(huì )受到所采用DB類(lèi)型的限制,于是我們需要從應用程序的角度來(lái)考慮改善系統架構,庫表散列是常用并且最有效的解決方案。我們在應用程序中安裝業(yè)務(wù)和應用或者功能模塊將數據庫進(jìn)行分離,不同的模塊對應不同的數據庫或者表,再按照一定的策略對某個(gè)頁(yè)面或者功能進(jìn)行更小的數據庫散列,比如用戶(hù)表,按照用戶(hù)ID進(jìn)行表散列,這樣就能夠低成本的提升系統的性能并且有很好的擴展性。sohu的論壇就是采用了這樣的架構,將論壇的用戶(hù)、設置、帖子等信息進(jìn)行數據庫分離,然后對帖子、用戶(hù)按照板塊和ID進(jìn)行散列數據庫和表,最終可以在配置文件中進(jìn)行簡(jiǎn)單的配置便能讓系統隨時(shí)增加一臺低成本的數據庫進(jìn)來(lái)補充系統性能。
三、服務(wù)器配置
圖片服務(wù)器分離:
大家知道,對于Web服務(wù)器來(lái)說(shuō),不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁(yè)面進(jìn)行分離,這是基本上大型網(wǎng)站都會(huì )采用的策略,他們都有獨立的圖片服務(wù)器,甚至很多臺圖片服務(wù)器。這樣的架構可以降低提供頁(yè)面訪(fǎng)問(wèn)請求的服務(wù)器系統壓力,并且可以保證系統不會(huì )因為圖片問(wèn)題而崩潰,在應用服務(wù)器和圖片服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化,比如apache在配置ContentType的時(shí)候可以盡量少支持,盡可能少的 LoadModule,保證更高的系統消耗和執行效率。
http壓縮:
HTTP 壓縮,HTTP 1.1 協(xié)議規范的一種建議,用來(lái)改進(jìn)頁(yè)面加載時(shí)間,它要求在 Web 服務(wù)器上實(shí)現壓縮特性并在瀏覽器端實(shí)現解壓縮特性。雖然早在幾年前,流行的瀏覽器大都能接收壓縮數據,但 Web 服務(wù)器卻不能發(fā)送壓縮內容。服務(wù)器壓縮模式出現之后,情況得到了改善。適用了http壓縮的頁(yè)面大致能節省下2/3的瀏覽帶寬,受益是非?陀^(guān)的,強烈推薦適用。
四、總結:
隨著(zhù)網(wǎng)民對網(wǎng)站訪(fǎng)問(wèn)速度要求越來(lái)越高,網(wǎng)絡(luò )程序員已經(jīng)不能無(wú)視網(wǎng)民這方面的訴求,F在隨著(zhù)網(wǎng)絡(luò )技術(shù)的不斷發(fā)展,也為我們提供了越來(lái)越多的方法來(lái)優(yōu)化網(wǎng)站。優(yōu)化網(wǎng)站是我們程序員不得不經(jīng)常面對的問(wèn)題,希望讀者能從以上提供的方法中得到啟發(fā)。在不斷學(xué)習中進(jìn)步。
【淺談如何提高網(wǎng)站的訪(fǎng)問(wèn)速度】相關(guān)文章:
淺談如何提高護理質(zhì)量?03-24
淺談如何提高語(yǔ)文教學(xué)12-11
淺談如何提高學(xué)生學(xué)習英語(yǔ)的興趣02-24
淺談如何提高學(xué)生英語(yǔ)寫(xiě)作能力11-20
淺談如何提高學(xué)生的學(xué)習主動(dòng)性02-14
- 相關(guān)推薦