2023-11-01 分類: 網(wǎng)站建設(shè)
網(wǎng)站性能優(yōu)化對(duì)于大型網(wǎng)站來(lái)說(shuō)非常重要。網(wǎng)站的打開(kāi)速度會(huì)影響用戶體驗(yàn)。網(wǎng)站訪問(wèn)速度慢會(huì)導(dǎo)致高跳出率。小網(wǎng)站很容易解決。對(duì)于大型網(wǎng)站,由于欄目較多,圖片和圖片都比較大,那么如何優(yōu)化整體性能?
一、大型網(wǎng)站性能提升策略
1、HTML 靜態(tài)化
其實(shí)大家都知道效率最高、消耗最少的是純靜態(tài)HTML頁(yè)面php網(wǎng)站部署到服務(wù)器,所以我們盡量讓我們網(wǎng)站的頁(yè)面都使用靜態(tài)頁(yè)面。這種最簡(jiǎn)單的方法其實(shí)是最有效的方法。 .
2、圖片服務(wù)器分離
眾所周知,對(duì)于web服務(wù)器,無(wú)論是IIS還是其他容器,圖片都是最消耗資源的,所以我們需要將圖片和頁(yè)面分開(kāi)。這基本上是大型網(wǎng)站采用的策略。它們有獨(dú)立的甚至很多的圖像服務(wù)器。這樣的架構(gòu)可以減輕提供頁(yè)面訪問(wèn)請(qǐng)求的服務(wù)器系統(tǒng)的壓力,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D像問(wèn)題而崩潰。在應(yīng)用服務(wù)器和鏡像服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化。比如在配置的時(shí)候,可以盡可能少的支持,盡可能的少,以保證更高的系統(tǒng)消耗和執(zhí)行效率。
3、數(shù)據(jù)庫(kù)集群,庫(kù)表hash
大型網(wǎng)站具有復(fù)雜的應(yīng)用程序。這些應(yīng)用程序必須使用數(shù)據(jù)庫(kù)。當(dāng)面對(duì)大量的訪問(wèn)時(shí),數(shù)據(jù)庫(kù)的瓶頸很快就會(huì)暴露出來(lái)。這時(shí)候一個(gè)數(shù)據(jù)庫(kù)很快就無(wú)法滿足應(yīng)用,所以我們需要使用數(shù)據(jù)庫(kù)集群或者數(shù)據(jù)庫(kù)表hash。
在數(shù)據(jù)庫(kù)集群方面,很多數(shù)據(jù)庫(kù)都有自己的解決方案,也提供了常用/類似的解決方案。
集群通常使用 CDN、GSbL 和 DNS 負(fù)載均衡技術(shù)。每個(gè)地區(qū)有一組前端服務(wù)器組,如網(wǎng)易,百度使用DNS負(fù)載均衡技術(shù),每個(gè)頻道有一組前端服務(wù)器,易搜使用DNS Load技術(shù),所有頻道共享一組前端服務(wù)器端服務(wù)器集群。
庫(kù)表哈希是最常用和最有效的解決方案。
我們?cè)趹?yīng)用程序中安裝業(yè)務(wù)和應(yīng)用程序或功能模塊來(lái)分離數(shù)據(jù)庫(kù)。不同的模塊對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)或者表,然后按照一定的策略對(duì)某個(gè)頁(yè)面或者函數(shù)進(jìn)行更小的數(shù)據(jù)庫(kù)hash,比如根據(jù)用戶ID對(duì)用戶表進(jìn)行hash,這樣可以提高系統(tǒng)的性能成本低,可擴(kuò)展性好。
搜狐的論壇采用這樣的結(jié)構(gòu),將論壇的用戶、設(shè)置、帖子等信息的數(shù)據(jù)庫(kù)分開(kāi),然后根據(jù)帖子和用戶的和ID對(duì)數(shù)據(jù)庫(kù)和表進(jìn)行hash,最后可以得到在配置文件中完成。簡(jiǎn)單的配置允許系統(tǒng)隨時(shí)添加低成本的數(shù)據(jù)庫(kù)來(lái)補(bǔ)充系統(tǒng)性能。
4、
所有從事技術(shù)的人都使用過(guò)“緩存”一詞,并且很多地方都使用緩存。 網(wǎng)站開(kāi)發(fā) 中的網(wǎng)站架構(gòu)和緩存也很重要。這里首先描述兩個(gè)最基本的緩存。稍后將描述高級(jí)和分布式緩存。至于架構(gòu)上的緩存,熟悉它的人都知道,它提供了自己的緩存模塊,或者可以使用額外的模塊進(jìn)行緩存。這兩種方法都可以有效提高訪問(wèn)響應(yīng)能力。
網(wǎng)站程序開(kāi)發(fā)的緩存提供了常用的緩存接口,可以在web開(kāi)發(fā)中使用。比如在Java開(kāi)發(fā)的時(shí)候,可以調(diào)用緩存一些數(shù)據(jù),共享通信。一些大型社區(qū)使用這種架構(gòu)。另外,在使用web語(yǔ)言開(kāi)發(fā)的時(shí)候,各種語(yǔ)言基本都有自己的緩存模塊和方法,pHp有pear模塊,Java比較多,.net也不是很熟悉,相信會(huì)有的。
5、
鏡像是大型網(wǎng)站經(jīng)常使用的一種提高性能和數(shù)據(jù)安全性的方法。鏡像技術(shù)可以解決由于不同的網(wǎng)絡(luò)接入商和地區(qū)造成的用戶訪問(wèn)速度的差異。比如很多網(wǎng)站的區(qū)別和推廣 鏡像網(wǎng)站建在教育網(wǎng),數(shù)據(jù)定期或?qū)崟r(shí)更新。
6、負(fù)載均衡
負(fù)載均衡將是大型網(wǎng)站解決高負(fù)載訪問(wèn)和大量并發(fā)請(qǐng)求的高端方案。負(fù)載均衡技術(shù)發(fā)展多年,有很多專業(yè)的服務(wù)商和產(chǎn)品可供選擇。
二、pHp 代碼編寫(xiě)優(yōu)化:
1. echo 比它快得多。
兩種方法都會(huì)在頁(yè)面上打印東西,但是echo不返回任何值,成功或失敗都會(huì)返回0或1。
2. 比這更耗時(shí)。
因?yàn)樗枰獧z查你要包含的內(nèi)容是否已經(jīng)包含。
3. 對(duì)于長(zhǎng)段落的字符串,必須使用單引號(hào)而不是雙引號(hào)。
因?yàn)殡p引號(hào)會(huì)搜索字符串中的變量。例如:echo ‘This is long ’。 $name 比 echo "This is long $name" 快得多。
4. 不要使用嵌套在循環(huán)中的 for 循環(huán)
5. 如果可以將函數(shù)定義為靜態(tài)函數(shù),則不要將其定義為成員函數(shù)。靜態(tài)函數(shù)比成員函數(shù)快 33%。
6.如果不用正則表達(dá)式也能解決問(wèn)題,那就不要使用正則表達(dá)式。
正則表達(dá)式比 pHp 的原生函數(shù)慢。例如,使用替換。
7. 盡量不要使用相對(duì)路徑來(lái)包含文件
在相對(duì)路徑中搜索文件,會(huì)在當(dāng)前目錄中搜索,然后依次再次搜索。這樣,查找文件非常慢。最好先定義這樣一個(gè)常量,然后用這個(gè)常量來(lái)包含文件。
8.全等符號(hào)===比等式快==
而 if (1 == '1') 會(huì)返回真,if (0 == ”) 也會(huì)返回真,而當(dāng)你使用全等符號(hào)時(shí), if (1 ==='1') 和 if (0 ===”) 將返回。所以當(dāng)你需要檢查程序中的一些布爾變量時(shí),最好使用全等符號(hào)。
三、三、有幾種方式
1.關(guān)閉調(diào)試模式
由于關(guān)閉調(diào)試模式,系統(tǒng)會(huì)自動(dòng)生成項(xiàng)目編譯緩存并關(guān)閉日志寫(xiě)入,可以減少大量的IO加載和日志寫(xiě)入開(kāi)銷(xiāo)。
2.啟用頁(yè)面壓縮輸出
從3.1版本開(kāi)始,增加了配置參數(shù)來(lái)控制頁(yè)面壓縮輸出。
3.啟用緩存
在網(wǎng)站部署環(huán)境中安裝ApC或緩存,可以有效提升網(wǎng)站性能和內(nèi)存使用率。它是一個(gè)開(kāi)源緩存/優(yōu)化器,這意味著它可以提高 pHp 在您的服務(wù)器上的性能。 pHp 編譯后數(shù)據(jù)緩存到共享內(nèi)存,避免重復(fù)編譯過(guò)程,編譯后的代碼可以直接用來(lái)緩存編譯后的代碼,提高速度。通常它可以將您的頁(yè)面生成率提高 2 到 5 倍并減少服務(wù)器負(fù)載。 pHp(ApC)是一種有效的pHp開(kāi)源緩存工具,可以緩存pHp中間代碼。
4. 字段緩存
默認(rèn)情況下,字段緩存是自動(dòng)生成的。開(kāi)發(fā)完成后,基本上數(shù)據(jù)庫(kù)的變化變少了,所以可以考慮將字段緩存合并到對(duì)應(yīng)的模型類中,這樣可以減少每次讀取字段緩存的IO開(kāi)銷(xiāo)。合并的方法是在/Data/
下找到對(duì)應(yīng)的字段緩存文件
四、 數(shù)據(jù)庫(kù)優(yōu)化
1、選擇合適的存儲(chǔ)引擎
舉個(gè)例子,有兩個(gè)存儲(chǔ)引擎和。每個(gè)引擎都有優(yōu)點(diǎn)和缺點(diǎn)。它適用于一些需要大量查詢的應(yīng)用。趨勢(shì)將是一個(gè)非常復(fù)雜的存儲(chǔ)引擎,對(duì)于一些小型應(yīng)用程序,它會(huì)比這更慢。但它支持“行鎖”并支持事務(wù)。
2、優(yōu)化字段的數(shù)據(jù)類型
記住一個(gè)原則,列越小,速度越快。對(duì)于大多數(shù)數(shù)據(jù)庫(kù)引擎,硬盤(pán)操作可能是最重要的瓶頸。因此,在這種情況下,使您的數(shù)據(jù)緊湊將非常有幫助,因?yàn)樗鼫p少了對(duì)硬盤(pán)的訪問(wèn)。如果一個(gè)表只有幾列(比如字典表、配置表),那么我們沒(méi)有理由使用INT作為主鍵。使用INT或更小更經(jīng)濟(jì)。如果不需要記錄時(shí)間,使用DATE會(huì)好很多。當(dāng)然,你也需要留出足夠的擴(kuò)展空間。
3、為搜索字段添加索引
索引不一定用于主鍵或唯一字段。如果你的表中有一個(gè)字段你會(huì)經(jīng)常使用,那么最好為其建立一個(gè)索引,除非你要搜索的字段是一個(gè)大文本字段,那么你應(yīng)該建立一個(gè)全文索引.
4、 *從數(shù)據(jù)庫(kù)讀取的數(shù)據(jù)越多,查詢?cè)铰?/p>
而且,如果你的數(shù)據(jù)庫(kù)服務(wù)器和WEb服務(wù)器是兩個(gè)獨(dú)立的服務(wù)器,這樣也會(huì)增加網(wǎng)絡(luò)傳輸?shù)呢?fù)載。即使要查詢數(shù)據(jù)表的所有字段,也盡量不要使用*通配符。善用內(nèi)置的字段排除定義,可能會(huì)帶來(lái)更多的便利。
5、使用 ENUM 代替
ENUM 類型非常快速且緊湊。其實(shí)它保存的是什么,只是在外面表現(xiàn)為一個(gè)字符串。這樣,使用這個(gè)字段來(lái)制作一些選項(xiàng)列表就變得非常完美了。例如,性別、種族、部門(mén)、地位等這些字段的值是有限的和固定的。那么,你應(yīng)該使用 ENUM 而不是。
6、盡量使用NOT NULL
除非您有非常具體的理由使用 NULL 值,否則您應(yīng)該始終保持您的字段 NOT NULL。 NULL 實(shí)際上需要額外的空間,比較起來(lái)你的程序會(huì)更復(fù)雜。當(dāng)然,這并不是說(shuō)不能使用NULL。實(shí)際情況很復(fù)雜,還有一些情況需要用到NULL。
7、定長(zhǎng)表會(huì)更快
如果表中所有字段都是“定長(zhǎng)”,則整個(gè)表將被視為“”或“-”。例如,表中沒(méi)有以下類型的字段:、TEXT、bLOb。只要您包含這些字段之一,該表就不是“固定長(zhǎng)度的靜態(tài)表”。這樣引擎就會(huì)用另一種方法來(lái)處理。
定長(zhǎng)表會(huì)提高性能,因?yàn)樗阉鲿?huì)更快,因?yàn)檫@些定長(zhǎng)很容易計(jì)算下一個(gè)數(shù)據(jù)的偏移量,所以讀取自然會(huì)更快。而如果字段不是定長(zhǎng)的,那么每次查找下一個(gè)時(shí),程序都需要查找主鍵。
此外,固定長(zhǎng)度的表更容易緩存和重建。但是唯一的副作用是定長(zhǎng)字段會(huì)浪費(fèi)一些空間,因?yàn)闊o(wú)論你使用與否,定長(zhǎng)字段都要分配這么多空間。
8、使用“垂直分割”技術(shù)
你可以把你的桌子分成兩張,一張是固定長(zhǎng)度的,一張是可變長(zhǎng)度的。垂直切分“垂直切分”是將數(shù)據(jù)庫(kù)中的一張表按列轉(zhuǎn)換成若干張表的方法,可以降低表的復(fù)雜度和字段數(shù),從而達(dá)到優(yōu)化的目的。例如:User表中有一個(gè)字段是家庭住址,該字段為可選字段,相比之下,操作數(shù)據(jù)庫(kù)時(shí)除個(gè)人信息外,無(wú)需頻繁讀取或重寫(xiě)該字段。那么,為什么不把他放在另一張桌子上呢?這樣會(huì)讓你的表有更好的性能,想想看php網(wǎng)站部署到服務(wù)器,如果有很多時(shí)候,我只有用戶表的用戶名,用戶名和密碼。 、用戶角色等會(huì)經(jīng)常用到。較小的手表將始終具有良好的性能。另外需要注意的是,這些劃分的字段組成的表,不要頻繁的加入,否則性能會(huì)比不劃分的時(shí)候差,而且會(huì)出現(xiàn)極值的數(shù)量。下降的程度。
9、您的詢問(wèn)
使用關(guān)鍵字讓您知道如何處理您的 SQL 語(yǔ)句。這可以幫助您分析查詢或表結(jié)構(gòu)的性能瓶頸。查詢結(jié)果還會(huì)告訴你你的索引主鍵是怎么用的,你的數(shù)據(jù)表是怎么搜索排序的……等等。對(duì)于比較復(fù)雜的語(yǔ)句,尤其是涉及多表的語(yǔ)句,通常我們可以在前面加上關(guān)鍵字。你可以用它來(lái)做到這一點(diǎn)。
五、前端優(yōu)化
優(yōu)化后端和數(shù)據(jù)庫(kù)后,接下來(lái)我們要做的就是優(yōu)化你的前端頁(yè)面和輸出頁(yè)面的資源文件,包括圖片、JS和樣式文件的優(yōu)化。建議使用以下網(wǎng)頁(yè)性能測(cè)試工具進(jìn)行檢測(cè)分析,并給出相關(guān)優(yōu)化建議:
開(kāi)發(fā)的工具
開(kāi)發(fā)人員可以使用它來(lái)評(píng)估其網(wǎng)頁(yè)的性能并獲得有關(guān)如何提高性能的建議。
它可以分析網(wǎng)站的頁(yè)面,告訴您如何根據(jù)一定的規(guī)則進(jìn)行優(yōu)化,以提高網(wǎng)站的性能。
文章名稱:網(wǎng)站性能優(yōu)化對(duì)于大型網(wǎng)站來(lái)說(shuō)的重要性有哪些?
分享地址:http://jinyejixie.com/news12/291812.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站、搜索引擎優(yōu)化、軟件開(kāi)發(fā)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容