如何優(yōu)化網(wǎng)站性能?針對前后端代碼框架優(yōu)化

閱讀 ?·? 發(fā)布日期 2022-03-25 19:43 ?·? admin

1、 前端優(yōu)化

首先,讓我們談?wù)勄岸藘?yōu)化。80%的用戶訪問網(wǎng)頁的等待時間發(fā)生在瀏覽器前端,尤其是頁面和頁面中各種元素(圖片、CSS、JavaScript、flash…)的下載。因此,在許多情況下,與花費大量時間在困難和復(fù)雜的程序改進上相比,前端優(yōu)化往往可以事半功倍。

對于首次訪問您的網(wǎng)站但尚未將您的網(wǎng)站內(nèi)容緩存在瀏覽器緩存中的用戶,我們可以執(zhí)行以下操作:

1) 減少頁面訪問生成的HTTP連接數(shù)

對于首次訪問您的網(wǎng)站的用戶,頁面生成的HTTP連接數(shù)是影響性能的關(guān)鍵瓶頸。

對策:

-保持頁面設(shè)計盡可能簡單,盡量減少圖片的使用,并通過放棄一些不必要的頁面效果來減少JavaScript的使用。

-使用一些優(yōu)化技術(shù),如利用圖片的背景位移來減少圖片數(shù)量;影像地圖技術(shù);使用inlineimages將CSS圖像捆綁到網(wǎng)頁中。

-嘗試合并JS和CSS文件以減少獨立文件的數(shù)量。

2) 將CSS放在頁面頂部,將JS文件放在頁面底部

CSS引用應(yīng)放在HTML的標題中,JS文件引用應(yīng)盡可能放在頁面底部標記的后面。其主要思想是盡快顯示核心頁面內(nèi)容。但是需要注意的是,對于一些使用了大量JS的頁面,底部的一些JS文件可能會導(dǎo)致一些不可預(yù)知的問題,可以根據(jù)實際情況適當使用。

具體來說,一些JavaScript壓縮工具用于壓縮JS腳本、刪除空白字符和注釋以及最小化變量名。基于gzip壓縮,JS內(nèi)容的壓縮可以將性能再提高5%。

3) 盡量減少使用外部腳本并減少DNS查詢時間

對于網(wǎng)站的頻繁用戶,主要的優(yōu)化思想是很大限度地利用用戶瀏覽器的緩存,以減少服務(wù)器的開銷。

4) 在標題中添加過期時間(expiresheader)

向標頭中的靜態(tài)內(nèi)容添加一個較長的過期時間,以便用戶將來只能讀取緩存中的文件,而無需與服務(wù)器進行任何交互。然而,這樣做也存在一些問題。更新圖像、CSS和JS文件時,如果用戶不刷新瀏覽器,則無法獲得更新。這樣,當我們修改圖像、CSS和JS文件時,我們必須重命名它們,以確保用戶能夠訪問有價值的內(nèi)容。這可能會給開發(fā)帶來很多麻煩,因為這些文件可能會被站點中的許多文件引用。Flickr提出的處理方法是通過URL重寫使不同版本號的URL實際指向同一個文件,這是一種聰明的方法,因為URL級別的操作效率很高,可以為開發(fā)過程提供很多便利。

要了解原因,您必須了解瀏覽器在訪問URL時的工作方式:

A.首次訪問URL時,用戶從服務(wù)器段獲取頁面內(nèi)容,將相關(guān)文件(圖像、CSS、JS…)放入緩存,并在文件頭中保留過期時間、LastModified、ETag和其他相關(guān)信息。

B當用戶重復(fù)訪問URL時,瀏覽器首先檢查緩存中是否存在同名文件。如果是,請檢查文件的過期時間;如果文件未過期,則直接從緩存讀取該文件,并且不再訪問服務(wù)器。

C如果緩存中文件的過期時間不存在或已超過,瀏覽器將訪問服務(wù)器以獲取文件的標題信息,檢查LastModified、etags和其他信息。如果發(fā)現(xiàn)自上次訪問以來本地緩存中的文件未被修改,則將使用本地緩存中的文件;

根據(jù)我的經(jīng)驗,如果可能的話,試著遵循這個原則為靜態(tài)文件增加過期時間,從而大大減少用戶對服務(wù)器資源的重復(fù)訪問。

5) CSS和JS文件在單獨的外部文件中引用

將CSS和JS文件放在單獨的文件中,以便它們單獨緩存,并且在訪問其他頁面時可以直接從瀏覽器的緩存中讀取。有些網(wǎng)站的主頁可能是例外。這些主頁的自瀏覽量可能不大,但這是用戶訪問網(wǎng)站的***印象,也是引導(dǎo)用戶訪問其他頁面的起點。這些頁面本身也可能使用大量Ajax本地刷新和技術(shù)。此時,CSS和JS文件可以直接寫入頁面中。

在ie中,包含重復(fù)的JS腳本將導(dǎo)致瀏覽器的緩存不被使用。仔細檢查你的程序。刪除重復(fù)的引用腳本應(yīng)該不難。

除了標頭中的人工重定向之外,網(wǎng)頁重定向通常是無意中發(fā)生的,重定向的內(nèi)容不會使用瀏覽器的緩存。例如,當用戶正在訪問時,服務(wù)器將轉(zhuǎn)到/通過301,后跟“/”。如果服務(wù)器配置不好,也會給服務(wù)器帶來額外的負擔。通過配置Apache的別名或使用Mod_uurewrite模塊和其他方法,可以盡可能避免不必要的重定向。

還有其他一些,例如使用CDN分發(fā)機制、避免CSS表達式、避免ETag等。因為它們不常用,所以這里不再重復(fù)。

經(jīng)過以上優(yōu)化后,可以嘗試用Yslow測試網(wǎng)頁的性能得分,一般可以達到70分以上。

當然,除了對瀏覽器前端和靜態(tài)內(nèi)容進行優(yōu)化外,還對程序腳本、服務(wù)器、數(shù)據(jù)庫和加載進行了優(yōu)化。這些更深層次的優(yōu)化方法對技術(shù)有更高的要求。本文的后半部分將重點討論后端優(yōu)化。

如何優(yōu)化網(wǎng)站性能?針對前后端代碼框架優(yōu)化

2、 后端優(yōu)化

前端優(yōu)化可以盡可能避免對服務(wù)器和帶寬資源造成不必要的浪費,但隨著網(wǎng)站訪問量的增加,僅靠前端優(yōu)化并不能解決所有問題。后端軟件處理并行請求的能力、程序運行效率、硬件性能和系統(tǒng)可擴展性將成為影響網(wǎng)站性能和穩(wěn)定性的關(guān)鍵瓶頸。為了優(yōu)化系統(tǒng)和程序的性能,我們可以從以下幾個方面入手:

1) Apache、MySQL等軟件的配置優(yōu)化

雖然安裝后Apache和MySQL等軟件使用的默認設(shè)置足以讓您的網(wǎng)站運行,但您仍然可以通過調(diào)整MySQL和Apache的一些系統(tǒng)參數(shù)來追求更高的效率和穩(wěn)定性。這個領(lǐng)域有很多專業(yè)的文章和論壇(例如:),為了掌握它,還需要進行深入的研究和實踐,這里不再討論。

Apache是一個功能齊全但相對較大的web服務(wù)器。它的資源消耗基本上與同時運行的進程數(shù)成正比。它消耗大量服務(wù)器內(nèi)存,通常在處理并行任務(wù)時效率很高。在某些情況下,我們可以使用輕量級Web服務(wù)器托管靜態(tài)圖像、樣式表和JavaScript文件。只有這樣,才能大大提高靜態(tài)文件的處理速度,大大減少內(nèi)存占用。我使用的web服務(wù)器是來自俄羅斯的nginx。其他選項包括lighttpd和thttpd。

當前端服務(wù)器不足以應(yīng)付用戶訪問時,通過前端機實現(xiàn)web訪問的負載均衡是最快、最可行的方案。通過apachemod_u2;Proxy可以輕松實現(xiàn)基于反向代理的負載平衡。建議使用nginx作為代理服務(wù)器,這比Apache更快。

2) 應(yīng)用緩存技術(shù)提高數(shù)據(jù)庫效率、文件緩存和分布式緩存

3) 檢查服務(wù)器的運行狀態(tài)以查找影響性能的瓶頸

系統(tǒng)優(yōu)化沒有一勞永逸的方法。我們需要檢測服務(wù)器的運行狀態(tài),及時發(fā)現(xiàn)影響性能的瓶頸和可能存在的潛在問題,因為網(wǎng)站的性能總是取決于桶中的短板。可以編寫一些腳本來檢查Web服務(wù)的操作,一些開源軟件也提供了良好的功能

一些技巧和技巧可以幫助你克服目前的困難,但是如果你想讓網(wǎng)站具備應(yīng)對大規(guī)模訪問的能力,你需要從系統(tǒng)架構(gòu)上做一個周密的規(guī)劃。幸運的是,許多前輩無私地分享了他們的架構(gòu)。網(wǎng)站優(yōu)化是指通過對網(wǎng)站功能、網(wǎng)站結(jié)構(gòu)、網(wǎng)頁布局、網(wǎng)站內(nèi)容等要素的合理設(shè)計,使得網(wǎng)站內(nèi)容和功能表現(xiàn)形式達到對用戶友好并易于宣傳推廣的最佳效果,充分發(fā)揮網(wǎng)站的網(wǎng)絡(luò)營銷價值,是一項系統(tǒng)性和全局性的工作,包括對用戶的優(yōu)化、對搜索引擎的優(yōu)化、對運營維護的優(yōu)化。網(wǎng)站優(yōu)化已經(jīng)成為網(wǎng)絡(luò)營銷經(jīng)營策略的必然要求。

網(wǎng)站優(yōu)化可以從狹義和廣義兩個方面來說明。
(1)狹義的網(wǎng)站優(yōu)化,即搜索引擎優(yōu)化,也就是讓網(wǎng)站設(shè)計得適合搜索引擎檢索,滿足搜索引擎排名的指標,從而在搜索引擎檢索中獲得靠前的排名,增強搜索引擎營銷的效果。
網(wǎng)站優(yōu)化的最終結(jié)果是要把網(wǎng)站的排名優(yōu)化,而首先要做的是網(wǎng)站的內(nèi)部優(yōu)化,分析網(wǎng)頁相關(guān)性。
(2)廣義的網(wǎng)站優(yōu)化所考慮的因素不僅僅是搜索引擎,也包括充分滿足用戶的需求特征、清晰的網(wǎng)站導(dǎo)航、完善的在線幫助等,在此基礎(chǔ)上使得網(wǎng)站功能和信息發(fā)揮出最佳的效果,也就是以企業(yè)網(wǎng)站為基礎(chǔ),與網(wǎng)絡(luò)服務(wù)商(如搜索引擎等)、合作伙伴、顧客、供應(yīng)商、銷售商等網(wǎng)絡(luò)營銷環(huán)境中各方面因素建立良好的關(guān)系。
網(wǎng)站優(yōu)化是企業(yè)進軍互聯(lián)網(wǎng)必然的選擇。通過對企業(yè)的網(wǎng)站進行網(wǎng)站優(yōu)化(搜索引擎優(yōu)化),使企業(yè)網(wǎng)站對搜索引擎更加友好,提高企業(yè)網(wǎng)站在搜索引擎中的排名,增強企業(yè)的宣傳推廣效果。搜索引擎優(yōu)化,是影響客戶網(wǎng)站在搜索引擎排名的最主要的因素。由于各個搜索引擎考慮的側(cè)重點不同,所以在不同的搜索引擎上搜索出來的結(jié)果也是不同的。
從易用性來說,網(wǎng)站優(yōu)化的原因有:最早的網(wǎng)站可能存在每當主流瀏覽器升級時,剛剛建立的網(wǎng)站就有可能過時的問題,這就需要升級或重新建造一遍網(wǎng)站;為了使網(wǎng)站兼容Netscape和IE,網(wǎng)站不得不為這兩種瀏覽器提供不同的代碼;每當新的網(wǎng)絡(luò)技術(shù)和交互設(shè)備出現(xiàn)后,也需要制作新版本來支持這種新技術(shù)或設(shè)備,如支持手機上網(wǎng)的WAP技術(shù);網(wǎng)站代碼臃腫浪費了大量帶寬。經(jīng)過優(yōu)化的網(wǎng)站文件下載與頁面顯示速度更快;內(nèi)容能夠被更多的用戶所在地訪問;當瀏覽器版本更新,或者出現(xiàn)新的網(wǎng)絡(luò)交互設(shè)備時,確保所有應(yīng)用能夠繼續(xù)正確執(zhí)行。
從可維護性和搜索引擎優(yōu)化的角度來說,網(wǎng)站優(yōu)化的原因有:簡潔的代碼,大大降低了帶寬的要求,加快了頁面加載速度,使得網(wǎng)站更容易維護;有利于搜索引擎抓取,使得網(wǎng)站對于搜索引擎更加友好,有利于提高網(wǎng)站的排名等。
對于網(wǎng)站設(shè)計和開發(fā)人員來說,網(wǎng)站優(yōu)化就是使用標準;對于用戶來說,網(wǎng)站優(yōu)化就是最佳體驗。
網(wǎng)站優(yōu)化

 

網(wǎng)站優(yōu)化,SEO優(yōu)化,關(guān)鍵詞排名-搜索引擎營銷推廣城市導(dǎo)航:

北京 東城區(qū) 密云區(qū) 平谷區(qū) 懷柔區(qū) 房山區(qū) 昌平區(qū) 大興區(qū) 順義區(qū) 通州區(qū) 豐臺區(qū) 石景山區(qū) 朝陽區(qū) 海淀區(qū) 西城區(qū) 延慶區(qū)
天津 和平區(qū) 津南區(qū) 西青區(qū) 東麗區(qū) 紅橋區(qū) 南開區(qū) 河?xùn)|區(qū) 河北區(qū) 河西區(qū) 北辰區(qū)
上海 黃浦區(qū) 奉賢區(qū) 青浦區(qū) 松江區(qū) 金山區(qū) 嘉定區(qū) 寶山區(qū) 閔行區(qū) 浦東新區(qū) 楊浦區(qū) 虹口區(qū) 普陀區(qū) 靜安區(qū) 長寧區(qū) 徐匯區(qū) 崇明區(qū)
重慶 渝中區(qū) 大渡口區(qū) 江北區(qū) 沙坪壩區(qū) 九龍坡區(qū) 南岸區(qū) 北碚區(qū) 渝北區(qū) 巴南區(qū)
江蘇 泗陽 海安 建湖 靖江 沛縣 邳州 如東 泰興 新沂 東臺 丹陽 泗洪 昆山 金壇 姜堰 灌云 灌南 寶應(yīng)縣 興化 揚中 東海 淮安 鹽城 揚州 南通 徐州 常州 無錫 南京 連云港 泰州 海門 溧陽 啟東 如皋 大豐 沭陽 鎮(zhèn)江 宿遷 蘇州
江西 南昌 永新 鷹潭 新余 景德鎮(zhèn) 撫州 萍鄉(xiāng) 上饒 吉安 宜春 九江 贛州 樂平
遼寧 沈陽 莊河 阜新 鐵嶺 葫蘆島 本溪 遼陽 丹東 朝陽 盤錦 營口 撫順 錦州 鞍山 大連 瓦房店
內(nèi)蒙古 呼和浩特 阿拉善盟 烏海 興安盟 錫林郭勒 烏蘭察布 巴彥淖爾市 呼倫貝爾 通遼 鄂爾多斯 赤峰 包頭 海拉爾
寧夏 中衛(wèi) 銀川 吳忠 石嘴山 固原 青海 西寧 海西 海北 果洛 海東 黃南 玉樹 海南
山東 青島 壽光 龍口 曹縣 單縣 肥城 高密 廣饒 桓臺 莒縣 蓬萊 青州 榮成 乳山 滕州 新泰 招遠 鄒城 諸城 墾利 濟南 煙臺 濰坊 臨沂 淄博 濟寧 泰安 聊城 威海 棗莊 德州 日照 東營 菏澤 濱州 萊蕪 章丘 鄒平
山西 太原 臨猗 朔州 忻州 呂梁 陽泉 晉城 長治 晉中 運城 大同 臨汾 清徐 陜西 西安 銅川 商洛 安康 延安 榆林 漢中 渭南 寶雞 咸陽 神木
四川 成都 資陽 涼山 廣元 雅安 巴中 阿壩 甘孜 安岳 廣漢 簡陽 廣安 眉山 攀枝花 綿陽 德陽 南充 宜賓 自貢 樂山 瀘州 達州 內(nèi)江 遂寧 仁壽
西藏 拉薩 日喀則 山南 林芝 昌都
新疆 烏魯木齊 和田 吐魯番 博爾塔拉 克拉瑪依 哈密 喀什 阿克蘇 伊犁 巴音郭楞 昌吉 石河子
吉林 長春 四平 延邊 松原 白城 通化 白山 遼源 公主嶺
湖南 長沙 張家界 湘西 婁底 永州 懷化 邵陽 郴州 岳陽 湘潭 衡陽 常德 益陽 株洲 醴陵
廣東 茂名 汕頭 湛江 肇慶 云浮 汕尾 潮州 臺山 陽春 順德 惠東 博羅 江門 惠州 珠海 揭陽 梅州 清遠 陽江 韶關(guān) 河源 深圳 廣州 東莞 佛山 中山 海豐
浙江 杭州 象山 溫嶺 桐鄉(xiāng) 慈溪 長興 嘉善 海寧 德清 東陽 安吉 蒼南 臨海 永康 諸暨 余姚 寧波 溫州 金華 嘉興 臺州 紹興 湖州 麗水 衢州 舟山 樂清 瑞安 義烏 玉環(huán)
安徽 合肥 宣城 亳州 黃山 池州 巢湖 和縣 霍邱 桐城 寧國 銅陵 馬鞍山 蕪湖 蚌埠 阜陽 淮南 安慶 宿州 六安 淮北 滁州 天長
福建 福州 南安 晉江 石獅 武夷山 龍巖 南平 三明 漳州 莆田 泉州 廈門 平潭
甘肅 蘭州 嘉峪關(guān) 臨夏 隴南 金昌 定西 武威 張掖 酒泉 慶陽 白銀 天水 甘南
廣西 南寧 防城港 賀州 來賓 河池 百色 欽州 貴港 北海 梧州 玉林 桂林 柳州 崇左
貴州 貴陽 黔西南 安順 銅仁 畢節(jié) 六盤水 黔南 黔東南 遵義 仁懷
海南 海口 白沙 保亭 澄邁 定安 東方 陵水 瓊中 屯昌 萬寧 文昌 瓊海 三沙 五指山 三亞 儋州
河北 石家莊 館陶 張北 趙縣 正定 遷安市 任丘 三河 武安 雄安新區(qū) 燕郊 定州 保定 唐山 廊坊 邯鄲 秦皇島 滄州 邢臺 衡水 張家口 承德 涿州
河南 鄭州 三門峽 鶴壁 濟源 明港 鄢陵 禹州 長葛 靈寶 杞縣 汝州 項城 偃師 漯河 駐馬店 洛陽 新鄉(xiāng) 南陽 許昌 平頂山 安陽 焦作 商丘 開封 濮陽 周口 信陽 長垣
黑龍江 哈爾濱 七臺河 伊春 黑河 鶴崗 雙鴨山 雞西 佳木斯 綏化 牡丹江 齊齊哈爾 大慶 大興安嶺 
湖北 武漢 鄂州 隨州 潛江 天門 仙桃 神農(nóng)架 宜都 漢川 咸寧 荊門 宜昌 襄陽 荊州 十堰 黃石 孝感 黃岡 恩施 棗陽
云南 昆明 迪慶 臨滄 保山 普洱 德宏 昭通 西雙版納 楚雄 文山 麗江 玉溪 紅河 大理 曲靖 怒江
臺灣 臺北 基隆 高雄 臺中 安平 臺灣 臺北 基隆 高雄 臺中 安平
香港 
澳門