標籤:編繹

所謂代碼優化是指對程序代碼進行等價(指不改變程序的運行結果)變換。程序代碼可以是中間代碼(如四元式代碼),也可以是目標代碼。等價的含義是使得變換后的代碼運行結果與變換前代碼運行結果相同。優化的含義是最終生成的目標代碼短(運行時間更短、佔用空間更小),時空效率優化。原則上,優化可以再編譯的各個階段進行,但最主要的一類是對中間代碼進行優化,這類優化不依賴於具體的計算機。

1分類

編譯過程中可進行的優化可按階段劃分:優化可在編譯的不同階段進行,分為中間代碼一級和目標代碼一級的優化。可按優化涉及的程序範圍劃分:對同一階段,分為局部優化,循環優化和全局優化. 進行優化所需要的基礎是對代碼進行數據流分析和控制流分析。如劃分DAG,查找循環,分析變數的定值點和引用點等等。最常用的代碼優化技術有刪除多餘運算,循環不變代碼外提,強度削弱,變換循環控制條件,合併已知量與複寫傳播,以及刪除無用賦值等等。
靜態網頁與動態網頁主要根據網頁製作的語言來區分:
·靜態網頁使用語言:HTML(超文本標記語言)
·動態網頁使用語言:HTML+ASP或HTML+PHP或HTML+JSP等。
網站源碼可以分為動態源碼和靜態源碼:
·動態源碼:ASP、PHP、JSP、.net、CGI等等,動態源碼最大的特點就是能夠和用戶之間互動。
·靜態源碼:html頁、Flash、JavaScript、VBScript等等。

2要點

一. 盡量採用div+css布局您的頁面,div+css布局的好處是讓搜索引擎爬蟲能夠更順利的、更快的、更友好的爬完您的頁面;div+css布局還可以大量縮減網頁大小,提高瀏覽的速度,使得代碼更簡潔、流暢、更容易放置更多內容。
二. 盡量縮減您的頁面大小,因為搜索引擎爬蟲每次爬行您的站點時,存儲數據的容量有限,一般建議100KB以下,越小越好,但不能小於5KB。網頁大小減少還有一個好處,能夠促使您的站點形成巨大的內部鏈接網。
三. 盡量少用無用的圖片和flash。內容索引所派出的搜索引擎爬蟲,不認識圖片,只能根據圖片「ALT,TITLE」等屬性的內容判斷圖片的內容。對於flash搜索引擎爬蟲更是視而不見。
四. 盡量滿足w3c標準,網頁代碼的編寫滿足W3C標準,能夠提升網站和搜索引擎的友好度,因為搜索引擎收錄標準,排名演算法,都是在W3C標準的基礎上開發的。
五. 盡量更深層次套用標籤h1、h2、h3、h4、h5…..,讓搜索引擎能夠分辨清晰網頁那一塊很重要,那一塊次之。
六. 盡量少用JS,JS代碼全部用外部調用文件封裝。搜索引擎不喜歡JS,影響網站的友好度指數。
七. 盡量不使用表格布局,因為搜索引擎對錶格布局嵌套3層以內的內容懶的去抓取。搜索引擎爬蟲有時候也是比較懶的,望各位一定要保持代碼和內容在3層以內。
八. 盡量不讓CSS分散在HTML標記里,盡量封裝到外部調用文件。如果CSS出現在HTML標記里,搜索引擎爬蟲就要分散注意力去關注這些對優化沒有任何意義的東西,所以建議封裝到專用CSS文件中。
九.清理垃圾代碼,要把代碼編輯環境下敲擊鍵盤上的空格鍵所產生的符號;把一些默認屬性代碼,不會影響顯示的代碼;註釋語句如果對代碼可讀性沒有太大影響,清理這些垃圾代碼,會減少不少的空間。

3html優化

html代碼是最為基礎的網站製作語言,對於網站優化來說,html代碼也有一定的影響,是特別需要注意的優化細節之一。
META元素
meta元素在瀏覽器界面是無法看到的html標籤,對於優化有影響的主要有兩個,一個是關鍵字(keywords)、一個是描述(description)。其實,這兩個標籤隨著seoer的胡亂使用,對於網站優化已經沒有多少用處了,你完全可以不用設定,但我們還是習慣性的設置一下較為妥當。關鍵字,設定與本頁內容相關的主關鍵詞一到三個,之間用英文狀態下的逗號分割。需要注意的是,不要再濫用關鍵字,除了給搜索引擎不好的印象外別無他用。描述還是很有用的一個東東了,雖然對於網站的優化排名么有多大的影響,但會作為搜索引擎展示網站索引的一個依據,可以把你的主關鍵字鏈接起來組合成一段通順的話,一般60到80字即可。格式為:
  <meta name="keywords"content="">
  <metaname="description"content="">
加強和強調
strong被認為是「加強」,em被認為是「強調」,也就是這兩個標籤是有特殊含義的,這對於網站優化至關重要。多數時候,我們在優化網站時會對關鍵字進行突出,這時使用strong或em就比使用B或者I好很多,特別謹記!
縮寫abbr
這個標籤是自定義的一種縮寫方式,可以利用它合理的添加一些關鍵字,同樣不要濫用。如下所示:
  公司的產品涉及<abbr title="以石材為原料的雕刻作品">石雕</abbr>、<abbr title="以銅料為胚,運用雕刻、鑄塑等手法製作的一種造型藝術">銅雕</abbr>、<abbr title="附屬在某一平面上的雕刻藝術">浮雕</abbr>、鏤雕等各種雕刻形式。
外鏈css
css的使用有多種方式,一是嵌入式,即在html標籤中直接定義樣式表,如下所示:<p style="font-family:arial;font-size:16px;font-weight:bold;">Outside now its raining,and tears are falling from my eyes…</p>
還有一種是直接定義在頁面頭部的如下:<styletype="text/css">p{ background:#f1f1f1; color:#333; line-height:20px;} </style>
這兩種方式都是把css寫在當前html中,這樣會造成hml文檔變大,降低網頁的響應速度,所以我們需要外鏈css,將所有與本頁面相關的樣式寫入到該樣式表中:<link href="style/common.css"rel="stylesheet"type="text/css"/>
整合css
一般情況下,前端製作人員喜歡把通用樣式寫成一個文件,把專用樣式寫成另一個文件以便各個頁面調用。如筆者,就喜歡把頁面通用樣式(包括通用的布局樣式、文字樣式等)寫在common.css中,而把專用的寫在另一個樣式表中。如首頁,我們就需要調用common.css和index.css兩個樣式表文件。這樣做,對於前端來說是正確的。但對於優化,卻不太好。多一個文件調用就需要多一次請求,當然也會多耗費一點時間。所以,在網站製作完成後,我們需要把頁面的所有樣式合併大一起以提高網頁的響應速度!但需注意,合併css不利於網站後期整改,權衡利弊各取所需吧,具體是否合併還需根據你的實際情況而定。
外鏈js代碼
js代碼跟css的使用差不多,都有三種方式:
內部定義:<A onclick="if(confirm('確認?'){...}else{...})"href="#">confirm</A>
  頭部插入:<script>...</script>
  外鏈調用:<SCRIPT language=javascript type=text/javascript src="jquery-1.7.2.min.js"></SCRIPT>
壓縮js代碼
對於這點,網上也有很多的工具,請百度查詢「js壓縮工具」即可。

置底js

一般情況下,我們都是把js放到head之間的,這種方式在頁面載入時即會載入,當然也就導致響應速度的降低,百度站長平台建議把js放到頁面最底部,也就是</html>之外。等html載入完畢之後才載入js代碼,當然,有部分特殊功能的js代碼是沒有辦法放到頁面底部的,具體請根據實際情況操作。
補充說明:針對js圖像特效等,可能會影響網站關鍵字排名的!有的特效圖像的路徑、說明等都是寫入到js中的,這種特效盡量不要使用。

4優化禁忌

·究竟要優化什麼?
在優化工作開始的時候,你還尚未明確優化內容和目的,那麼你很容易陷入誤區。在一開始,你就應該清楚地了解你要達到的效果,以及其他優化相關的各種問題。這些目標需要明確指出(至少精通技術的項目經理可以理解和表達它),接下來,在整個優化過程中,你需要堅持這些目標。
在實際的項目開發中,經常會存在各種各樣的變數。可能一開始時要優化這一方面,隨後你可能會發現需要優化另一方面。這種情況下,你需要清晰地了解這些變化,並確保團隊中的每個人都明白目標已經發生了變化。
·選擇一個正確的優化指標
選擇正確的指標,是優化的一個重要組成部分,你需要按照這些指標來測量優化工作的進展情況。如果指標選擇不恰當,或者完全錯誤,你所做的努力有可能白費了。
  即使指標正確,也必須有一些辨別。在某些情況下,將最多的努力投入到運行消耗時間最多的那部分代碼中,這是實用的策略。但也要記住,Unix/Linux內核的大部分時間花費在了空循環上。
  需要注意的是,如果你輕易選擇了一個很容易達到的指標,這作用不大,因為沒有真正解決問題。你有必要選擇一個更複雜的、更接近你的目標的指標。
·優化在刀刃上
這是有效優化的關鍵。找到項目中與你的目標(性能、資源或其他)相背的地方,並將你的努力和時間用在那裡。
  舉一個典型的例子,一個Web項目速度比較慢,開發者在優化時將大部分精力放在了資料庫優化上,最終發現真正的問題是網路連接慢。
  另外,不要分心於容易實現的問題。這些問題儘管很容易解決,但可能不是必要的,或與你的目標不相符。容易優化並不意味著值得你花費工夫。
·優化層次越高越好
在一般情況下,優化的層次越高,就會越有效。根據這個標準,最好的優化是找到一個更有效的演算法。舉個例子,在一個軟體開發項目中,有一個重要的應用程序性能較差,於是開發團隊開始著手優化,但性能並沒有提升太多,之後,項目人員交替,新的開發人員在檢查代碼時發現,性能問題的核心是由於在表中使用了冒泡排序演算法,導致成千上萬項的增加。
  儘管如此,高層次的優化也不是「銀彈」。一些基本技術,如將所有東西移到循環語句外,也可以產生一些優化的效果。通常情況下,大量低層次的優化可以產生等同於一個高層次優化的效果。
  還需要注意的是,高層次優化,會減少一些代碼塊,那麼你之前對這些代碼塊所做的優化就沒有任何意義了,因此,剛開始就應該考慮高層次的優化。
·不要過早優化
在項目早期就進行優化,會導致你的代碼難以閱讀,或者會影響運行。另一方面,在項目後期,你可能會發現之前所做的優化沒有起到任何作用,白白浪費了時間和精力。正確的方式是,你應該將項目開發和優化當作兩個獨立的步驟來做。
·依賴性能分析,而不是直覺
你往往會認為你已經知道哪裡需要優化,這是不可取的,尤其是在複雜的軟體系統中,性能分析數據應該是第一位的,最後才是直覺。
  優化的一個有效的策略是,你要根據所做工作對優化效果的影響來進行排序。在開始工作之前找到影響最大的「路障」,然後再處理小的「路障」。
·優化不是萬金油
優化最重要的規則之一是,你無法優化一切,甚至無法同時優化兩個問題。比如,優化了速度,可能會增加資源利用;優化了存儲的利用率,可能會使其他地方放慢。你需要權衡一下,哪個更符合你的優化目標。

相關評論

同義詞:暫無同義詞