二代碼優化
一、恰當地使用標題標簽
合理的使用h1-h6標簽,它的存在是告訴搜索引擎哪個是最重要的,哪些是次要的。對於頁面的主題使用標簽。充分利用到標簽來指明內容的層次以及描述相似的內容區域。但不要一個頁面使用多個標簽。
二、避免頁面重復
每個頁麵包括標題、描述和關鍵字等都應該不一樣,需要注意的是很多設計師會做一個通用的模板,而用的時候又忘記修改。標題一定要是具有獨特性的!
三、設計好網站導航
網站的導航全站通用,至關重要,盡量用文字導航,不要用圖片和flash等,若一定要用圖片請一定加上alt屬性。Flash則盡量避免,Flash的效果是很好的,但載入很慢,搜索引擎也無法讀取Flash文件。
四、精簡代碼,合理布局。
符合web2.0標准,使用div+css設計網頁,合理布局標簽盡量減少div層,使用描述標簽,精練描述你的網頁網路銷售培訓,將網站重點內容與經常更新的內容代碼盡量靠近的位置。頁面不要超過125K。
五、圖片與文字鏈接加上屬性
給所有圖片加上alt描述屬性。並符合W3C標准,搜索引擎會讀取alt屬性,圖片的alt屬性還可以幫助用戶瀏覽。給文字鏈接加上title屬性,並記住盡量減少用圖片代替文字!
六、少用腳本,外部調用。
網站的javaScript和CSS等文件一律外部調用,不要把代碼寫在網頁中,並且盡量減少腳本文件個數,這樣不僅僅有利於網頁載入速度也有利於搜索引擎蜘蛛的抓取!要提一下的是ajax效果雖然很炫,也盡量少用喲!
七、網頁布局結構
麵包屑型導航,樹狀扁平化結構。首頁點擊不出三次可以到達網站任何一個頁面,任何頁面都可以很快的回到想要的頁面。文章內容部分先於其他部分顯示,設置上一篇、下一篇文章,根據文章的關鍵詞設置「相關文章",如果文章內容多分幾頁顯示,需要保持每頁的網頁標題、文章內容均不同,避免出現復制內容問題。
B. 請教什麼是代碼優化
應該是抄頁面整體代碼的編排吧,襲搜索會訪問你的源代碼,也是一種優化巴,你看那些大網站靠前的,右鍵查看源代碼,是否代碼編排的很專業?呵呵比如更多網站pw用戶就喜歡把標題和網站介紹還有關鍵字在代碼里給重新優化下,原始的看起來非常的亂
C. 如下幾條簡單代碼怎麼優化
1. 最簡單高效的實現方法是使用指針定義front,behind和tem。
T* front, *behind, *tem;
front = new T;
behind = new T;
tem = front; front = behind; behind = tem;
2. 右值引用比較復雜,沒用熟悉前最好多做內練習。容實現如下
T&& move(T&& value)
{
return value;
}
T tem = move(front);
front = move(behind);
behind = move(tem);
右值引用避免了內存復制,效率大大提高,但是仍然不如方法1.
所以單純交換數據來說,右值引用並沒有多大的優勢,它的主要優點是在於使用類,stl,函數返回值等情況時避免內存復制。
D. 代碼優化是如何實現的
代碼優化就是對網頁中的html源代碼進行必要的調整,以提高頁面的有好行,頁面經過優化後,一方面可以有效的精簡頁面中的冗餘代碼,加快頁面的顯示速度,同時降低頁面佔用搜索引擎伺服器的存儲空間,從而提高頁面的用戶體驗及搜素引擎友好型;另一方面可以突出頁面主題,提高頁面的相關性。
主要步驟:精簡代碼;頭部優化,權重標簽使用及圖片優化。在這四個環節中,精簡代碼是最基礎、最根本。
1.精簡代碼是指清除或者簡化頁面中的代碼,從而達到降低頁面體積、提高頁面的用戶體驗及搜索引擎優化性的目的。
精簡代碼又分五個小步驟:1.清理垃圾代碼;2.html標簽轉換;3.CSS優化;4js優化以及表格優化。
1.1 垃圾代碼是指那些在刪除的情況下也不會影響頁面正常顯示的非必要代碼。不要小看這些代碼,他占據了很大的空間,不僅影響性能還影響搜索引擎的計算時間,所以代碼最好是手寫,如果用frontpage,Word,Dreamweaver,等工具寫的話,產生的垃圾代碼會非常多,所以手動清理掉。
1.2 html標簽轉換,主要是指使用短標簽替換在網頁中實現同樣效果的長標簽。例如與,兩周都是對字體加粗,但是比多出五個字元,如果頁面很多的話,就會產生很多冗餘代碼。
1.3 css優化。css優化主要是改變css的調用方式,以及避免使用css為重要內容定義樣式。
使用div+css方式製作頁面,一方面防止垃圾代碼,另一方面可以減少重復代碼。這種方式對搜索引擎非常友好。
1.4 js優化。js對搜素引擎極不友好。目前搜索引擎不能解析javascript生成的頁面或者內容。所以重要的內容不能用js腳本生成;
1.5表格優化,傳統的頁面基本都是用table。但是這種方式對搜索引擎非常不友好,所以不建議用table
實戰:我的網站gsm alarm system所有的頁面都是手寫,幾乎沒有任何的冗餘代碼,就是標簽的轉換,盡量避免了長便簽。
還有就是css優化,所有的樣式我放在外部頁面,只需在頭部添加引用即可,這樣大大減少了頁面的體積。
還有就是我採用了div+css的方式寫了每個頁面。
還有js優化,所有的重要內容都沒有使用js,用js只是顯示一些特效,但是js的代碼也是寫在外部頁面,而要在頁面的底部添加引用,千萬不要再頭部,如果在頭部也會影響頁面的性能的
而我的網站gsm alarm system所有的頁面都遵守了上面所述規則。以上小弟如果有錯的地方,各位大哥,可以給予指點,小弟不勝感激。好了今天就到此了,下節繼續。
E. 代碼優化
創建3個數組 myCompOverlay[6],BMapPoint[6],myBuldings[6]
F. 代碼優化從那裡入手
優化見解
php作為腳本語言被廣泛應用於網頁網站程序設計中。
由於是腳本語言,在運行時才對高級語言代碼解釋執行,所以跟編譯語言(如C)比起來php的效率比較低,稍復雜的程序執行起來就需要消耗較多的時間。作為網頁伺服器時,低效率意味著消耗更多的伺服器資源。所以,有必要通過優化php 程序代碼來提高效率,減小伺服器資源消耗。(當然如果你的程序本來就消耗很少執行時間或者你的伺服器足夠強,那就不一定要進行優化了)
網上很多文章介紹優化php程序,是通過安裝Zend Optimizer之類的加速軟體實現的,但這種加速是有限的。本文主要從程序代碼著手介紹一些優化思路和手段。
程序的抽象層越多,各抽象層分離得越嚴格,程序效率越低。
最原始的應用於網頁的php程序模式莫過於腳本嵌入模式,即僅僅在一個網頁中需要動態處理或顯示數據的地方通過加入<?php和?>標識符嵌入php腳本。一般來說這是php程序員最早學習的模式,它只有一個抽象層,就是網頁,故本文稱其為單層模式。
隨著網站規模逐漸增大,程序員可能會發現單層模式的程序很難維護,當想對程序修改或擴充功能時,會發現代碼非常混亂,感覺無從下手。於是模板類誕生了,它使得一個網頁由兩個文件組成:一個php程序文件,一個html模板文件。常用的模板類有PHPLib庫帶的Template模板類,Smarty模板類等。由於加入了額外的處理程序(模板類),程序效率下降了。你若不信可自己測試一下。其實一般情況下,不用函數(最原始的編程方法)比用函數(面向過程)的效率高,而用函數的效率又比對象封裝(面向對象)高。所以就算在編譯語言中,需要高效率的地方會用C寫而不用C++,例如FreeBSD操作系統的內核;而需要極端高效的地方還要用匯編寫。
為了使程序可以適應多種資料庫系統,或者方便隨時轉換資料庫系統,常常還會用一個類把跟資料庫打交道的函數封裝起來,這樣當轉換資料庫系統時只要把封裝類換掉就行了,主程序不需要修改。這里又用了一個類,效率又打折扣了。
上述模板類的使用,使程序分成兩個抽象層:程序層和表現層。而資料庫類的使用又把程序層分為數據介面層和數據處理層。
項目越龐大,需要分離的抽象層就越多,這樣使得分工清晰,方便管理,但是以犧牲程序執行效率為代價。
對於抽象層造成的效率下降,優化的方法有二:減小抽象層、優化抽象層之間的介面。一般地,不應該為了提高效率而盲目減小抽象層,這樣會使得代碼混亂、難於管理。但是不應該為小項目建立過多的抽象層,除非你有將來把它做得很大的計劃。關於如何恰當分割抽象層,本文不作更深入討論。
對於上文說的兩個分層例子,優化抽象層之間的介面分別是模板類和資料庫操作類。抽象層介面在程序中需要被頻繁調用,以在不同層之間交換信息,所以層介面是很值得優化的。對於資料庫介面類,可能僅僅是封裝一些資料庫函數,優化餘地恐怕不大。對於模板類,很多時候是有較大優化餘地的。一般地,模板模型越通用,模板類功能越強大,效率就越低,例如PHPLib庫帶的Template類就有極大的優化餘地。而Smarty模板類比PHPLib的Template更復雜,我沒有用過,據稱有緩存機制,不知是否可以彌補其性能損耗。下面就來看看PHPLib的Template類有多少東西可以優化掉。
1.
讀入模板文件時,file函數效率低,改用get_file_content函數。
2.
匹配子模板時,正則表達式替換函數preg_replace效率低,改用str_pos函數進行定位和用str_replace函數進行替換操作。此優化手段後文會詳細分析。
3.
模板模型通用性很強,能適應各種情況,但在具體細節的處理上,通用的方法效率可能很低。可以對模板模型作適當修改。我的做法是建一個相對通用的模板類,然後再派生出一個只適用於特定程序的模板類。在通用模板類的模板模型上可以作些優化(相對於PHPLib的Template),例如在處理二維數據表的時候用 PHPLib的Template處理就比較復雜(具體實現方法可參考《優化php嵌套模版》),需要多次調用類方法(本質上是函數調用),所以重寫的時候可以把處理二維數據表的功能封裝到一個高效率的方法中,直接避免方法的多次調用。
4.
調試功能在小項目上不需要用,跟調試相關的代碼全部去掉。
我在按上面4點重寫了模板類之後,一個復雜頁面的執行時間縮小了一個數量級(除模板外沒有作其它優化)。
現在就優化你的程序的抽象層之間的介面,特別是當這些介面是使用現成的函數或類的時候。因為這些函數或類在設計時會為了適應普遍情況而犧牲一些效率,而且它們的作者也可能沒有考慮效率問題。像如此著名的PHPLib的模板類的效率也不見得就高。
細節代碼優化
優化代碼不應總是祈求大刀闊斧式的優化,當大方面已經無從入手時,不妨把視線轉移到細節上。
1.
上文模板類優化已提到的,正則表達式匹配比一般字元串匹配慢得多,盡可能用字元串匹配而不用正則表達式匹配。有時候雖然用正則表達式匹配使程序代碼更簡潔,而一般字元串匹配使代碼更冗繁,但很多時候字元串匹配仍比正則表達式高效。
2.
字元串替換函數str_replace和preg_replace都是可以接受數組參數的。有時候需要對字元串進行批量替換,則用數組參數比循環調用替換函數來得高效。例如下面的代碼:
1. for ($i = 0; $i < $n; $i++) {
2. $str = str_replace($search[$i], $replace[$i], $str);
3. }
應該換成:
1. $str = str_replace($search, $replace, $str);
注意:這里$search和$replace都是數組
str_replace和preg_replace的數組用法可參考PHP手冊。
3.
對用於賦值的條件語句,可改用?:算符
這里僅舉三個細節代碼優化的方法。實際上PHP程序還有很多細節代碼優化方法,要掌握這些方法,需要多看PHP手冊,多了解些函數。在解決一些細節問題時,用不同的函數作不同的搭配,就產生不同的方法,對不同的方法應進行實際效率測試,得出優化方法。
面向對象、面向過程、類、函數、宏
盡管面向對象方法在程序設計中有很多優點(這里就不羅列了),但一般地說,面向對象程序的執行效率往往不如面向過程好,一個顯然的理由是面向對象的程序往往要頻繁調用對象的方法從而使代碼簡潔明了,卻降低了程序執行效率。
對於中小型項目,為程序效率著想,最好在思想上,面向對象與面向過程兼有,在代碼上,類、函數、宏搭配使用。這里提到一個可能對讀者陌生的概念——宏(macro)。在C語言中有宏,宏匯編中也有宏,但PHP中官方沒有定義「宏」的概念。然而我們可以通過require函數和include函數實現宏的功能。require和include通常用來在程序代碼中包含函數庫或類庫等文件,一般很少用來直接包含程序代碼文件,因為包含程序代碼有時會降低代碼易讀性。當有一段代碼需要在很多頁面中都執行時,通常被想到的是把它打包為函數或封裝為類。但此法有缺點如下:
1.
降低程序效率。因為增加了函數/類方法調用。
2.
有時此段嵌入代碼較復雜,實現功能並不單純,封進函數並不符合函數功能單純的原則。
3.
有時嵌入代碼需要與外部大量交換數據,如果封進函數會使參數表龐大,且處理函數的返回值也變得復雜。
4.
由於有2、3兩點缺點,導致當嵌入代碼與外部代碼交換的數據有所變化時,函數或類的介面的更改會變得麻煩。
當遇上以上情況時,我建議使用宏,即把嵌入代碼直接寫入被包含文件中,供各頁麵包含。但此時務必要清晰注釋宏的調用方法,輸入輸出數據等,以彌補代碼易讀性的降低。
總之,面向對象、面向過程、類、函數、宏,這些都應根據具體實際情況而搭配使用,不應盲目死守某些原則。
SQL資料庫
本來SQL資料庫的優化不應歸入PHP優化,但實際應用中PHP常與SQL資料庫配合構建網站,常用的資料庫有MySQL、PostgreSQL等。於是SQL查詢的效率也直接影響PHP程序的效率,故本文也略為談一談。
1.
MySQL 中,使用InnoDB或BDB表(支持事務)的效率比MyISAM表(不支持事務)的效率低,尤其InnoDB表效率比MyISAM低很多,而BDB表的主要劣勢在於佔用磁碟空間比MyISAM表多很多,且不能查知每個表佔用磁碟空間的大小。而對中小型應用,數據不一致性出現的概率是很微的,所以盡可使用 MyISAM表提高效率。(關於MySQL數據表的更多討論可參考《MySQL 中三種數據表的對比》)
2.
恰當建立索引和存儲冗餘數據。此話題太大故本文不打算作詳述。
3.
有些SQL查詢僅需知道資料庫中是否存在符合條件的行,故只要查得一行,搜索即可結束。所以對此類查詢,可在SQL句末加上LIMIT 1使資料庫一旦搜到滿足條件的行即不再搜索。
4.
盡量少用JOIN,有些低效率的JOIN查詢可通過存儲冗餘數據來避免。
5.
有時候需要比較現在的時間與資料庫某列的時間的差距,返回時間差距滿足一定條件的行。在MySQL 4.1之前,是沒有DATEDIFF函數的,但可以用DATE_ADD或DATE_SUB函數簡潔實現,例如要返回xtime列距今超過10天的行,有兩種寫法:
法一:
1. SELECT somecolumn FROM sometable WHERE DATE_ADD(xtime, INTERVAL 10 DAY) < NOW()
法二:
1. SELECT somecolumn FROM sometable WHERE DATE_SUB(NOW(), INTERVAL 10 DAY) > xtime
兩種寫法執行結果等效但效率不同。如果xtime列建有索引,則法一的寫法無法使用索引,而法二的寫法可以用索引,故應採用第二種寫法提高效率。
除此之外,SQL資料庫優化還大有學問。
延遲輸出與緩沖
有時候有些頁面無論如何也無法優化到需要的速度,此時可以考慮使用延遲輸出與緩沖的技術。
關於延遲輸出,可參考《動態網頁中慢數據的延遲輸出》,本文不再詳述。
而緩沖也是一個大話題,故本文也不打算作詳述,但作一簡介。
常用的技術,按網站軟體層次分,有網頁服務軟體的緩沖技術,例如Apache的緩沖技術;又有動態腳本的緩沖技術,例如用PHP編程實現的緩沖技術。
此外又可分為靜態緩沖技術和動態緩沖技術。靜態緩沖技術即把動態內容生成靜態的html頁面存於磁碟,客戶端幾乎完全跟靜態頁面打交道,整個網站猶如一個靜態網站。而伺服器後台在適當時候調用動態程序更新靜態內容(重新生成靜態內容)。動態緩沖技術則是客戶端仍與動態頁面打交道,而動態網頁在接到客戶請求時先檢查是否有相應的緩沖網頁,如有,直接把該靜態頁輸出到客戶端,如無或緩沖頁已過時,則重新生成緩沖頁面並輸出到客戶端。
雖然本文篇幅已經有相當長度,但對PHP優化這個大話題來說只是一個概述,很多優化技術也只是點到為止。讀者可擇感興趣的技術看更多的資料作深入學習。
G. 網站代碼優化是怎麼操作的,內容越細致越好
簡單而言,網頁的代碼優化,就是代碼精簡和標簽優化的結合體。
雖然搜索引擎力爭和來訪用戶行為一致,但它畢竟是機器程序,訪問頁面的時候針對的是網頁的源代碼。為更好地進行搜索引擎優化及更好地支持蜘蛛的抓取和爬行,需要對網頁代碼進行精簡、優化以及對網頁代碼中的標簽進行適當的優化。
第一、代碼精簡
代碼精簡是指清除或者簡化頁面中的代碼,達到降低頁面體積,提高頁面載入速度,從而提升用戶體驗,提高搜索引擎友好度的目的。
不論一般的CMS系統,還是自己研發的網站程序,代碼精簡都非常必要。因為現在的程序開發往往都力爭「無所不包」,恨不得在一個腳本系統中加入所有的功能,而對網站、用戶、搜索引擎而言,這些功能可能並不需要,所以需要進行適當的精簡。頁面代碼的精簡通常可以分為以下幾個方面:
1、垃圾代碼清理;
2、HTML標簽轉換;
3、CSS優化;
4、JS優化;
下面簡單介紹上述各方面的典型例子。
一、「垃圾代碼清理」:將頁面中無用的代碼刪除之後,頁面不會有任何影響。
1、常見的垃圾
代碼一般包括各種網頁製作軟體在製作網頁時默認生成的無用代碼,比如無意義的空格、默認屬性、注釋語句和空語句等。
「HTML標簽轉換」:從代碼精簡的角度考慮,將原本的長標簽替換成擁有同樣功能、搜索引擎認為作用一致的短標簽,比如「<strong>」和「<b>」的作用都是加粗,但是「<strong>」比「<b>」多5個字元。如果網頁上有很多個加粗的標簽,明顯用「<b>」替換「<strong>」可以起到代碼精簡的作用。
「CSS優化」:CSS是cascadingstylesheet的縮寫,即層疊樣式表。它是目前最常用的控制頁面布局、字體、顏色、背景的技術。CSS優化主要是改變CSS的調用方式、採用DIV+CSS的方式進行頁面製作,以防止垃圾代碼的產生,減少重復代碼。
「JS優化」:所謂JS,就是&#106avascript的簡稱。在搜索引擎眼中,到目前為止仍然不解析JS生成的頁面或者內容,也就是說JS對搜索引擎來說是不友好的,如果將內容放置到JS中,是無法被搜索引擎抓取的。JS優化主要是為了避免JS代碼佔用頁面空間及重要位置,以及放置一些不希望搜索引擎看到的內容。
上面是一些典型的代碼精簡的例子,考慮到技術門檻,並未做過多地深入講解。就目前來看,主流的CMS系統往往都需要進行代碼的精簡,根據不同情況,搜索引擎優化者應該進行適當的學習和調整。
2.<title>標簽優化
<title>標簽頁稱為標題標簽,它和<keywords>、<description>標簽一起構成網頁的頭部三大標簽。
標題標簽內容是對網頁主題的概括,相當於一篇文章的題目。一般情況下,打開一個網站,在任意頁面選擇「查看源文件」,都可以看到頁面中的<title>標簽,而這個標簽中的內容,,對用戶來說,就顯示在瀏覽器的頂部。
在整個站內搜索引擎優化技術當中,標題標簽是最重要的,它對頁面內容產生決定性影響,絕大多數搜索引擎都會提取網頁標題中的內容作為搜索結果展現給用戶。
在標題標簽優化中,需要注意以下幾個細節:
a、「唯一的標題」:在單網頁優化中,所有網頁都應該有適合自己的獨特的標題。很多網站因為腳本程序的默認設置,或者是內容建設者的馬虎,往往會造成網頁內容不同,而標題相同的情況,這在搜索引擎優化中是應該杜絕的。
b、「標題長度」:為符合搜索引擎展示網頁的需求,~般要求標題長度在25~30個字之間較為合適。如果太短,無法很清楚地表達出頁面的內容;如果太長,則搜索引擎返回的查詢結果中就無法完全顯示。
c、「關鍵詞分布」:在網頁的標題中,盡量出現針對這個網頁內容主題的關鍵字、關鍵詞,但是需要自然,要符合用戶閱讀習慣,同時不要生硬地進行關鍵詞堆砌。
d、「標題吸引力」:上一篇《這樣優化標題,更吸引人》講過,一個好的標題,應該對用戶產生足夠的吸引力,以方便網站在搜索結果中展現的時候,吸引更多用戶進行點擊。如果標題沒有足夠的吸引力,排名再好也不會讓用戶感興趣,獲得的流量自然也不會多。
e、「標題構成」:對單網頁來說,一般情況下,標題順序應該是「本頁內容主題』』+「欄目名」+「網站名(品牌)」,這種標題構成格式是最常見,也是最符合用戶習慣和搜索引擎喜好的標題構成方式。
3.<keywords>標簽優化
<keywords>標簽也就是網頁的關鍵字標簽,主要作用是告訴搜索引擎,此頁面的主要內容要點、關鍵詞。
對單網頁來說,<keywords>標簽應該按照關鍵詞的重要性順序,有針對性地羅列幾個真實的關鍵詞。也就是說,這里羅列的關鍵詞應該是整個網頁的主要內容凝練,不應該偽造或者堆砌關鍵詞。
4.<description>標簽優化
<description>標簽也就是描述標簽,主要是對當前網頁內容的概括,是相對簡單的頁面介紹。
和<keywords>標簽一樣,因為早期很多人利用<description>標簽堆砌關鍵詞,從而達到作弊的目的,所以現在的一些搜索引擎已經表示減弱或者完全不將<description>標簽作為排名演算法因素。
不過,同<keywords>標簽不同的是,很多搜索引擎會將<description>標簽的內容,作為搜索結果展現中的描述,呈現給用戶,所以從提高用戶體驗、吸引眼球的角度而言,<description>標簽應該進行有針對性的優化:
a、<description>標簽長度:在Google中,它有時會截取描述標簽中的112個中文字元長度的內容,作為搜索結果中的描述,所以一般情況下,描述標簽不應該太長、太短,以80~110個中文字元長度為宜:
b、關鍵詞分布與組合:在<description>標簽中,應該恰當地出現關鍵詞,並且在自然、通順、歸納網頁內容的前提下,盡量進行關鍵片語合,以利於搜索引擎挖掘更多的長尾關鍵詞。
5.<h>標簽優化
對單網頁來說,頭部三大標簽優化完成之後,整個網頁的代碼優化就大致完成一半,其餘一些重要的權重標簽優化佔到另外的一半,比如<h>、<b>等。
<h>標簽是所有權重標簽中最重要的標簽,它一共有6種樣式,即<h1>~<h6>,這些標簽在影響頁面相關性方面逐級遞減。
在實際的頁面優化中,優化者應該將頁面中最重要的內容,加上<hl>標簽,比如單網頁內容區域中的標題;將網頁中的主要段落標題、二級分類加上<h2>標簽。
需要注意的是,對內容單網頁來說,不建議採用過多的<h>標簽進行標記。通常情況下,<hl>出現1次,<h2>出現3、4次就足夠了。<h3>可能偶爾出現在分類較細的網站首頁,但是<h4>以後的<h>標簽一般就沒有運用的必要。
6.其他標簽優化
除上述講解的幾個常用標簽以外,還有一些其他的標簽,也可以適當地進行優化,比如:
a、<font>標簽:用於字體屬性的定義。
b、<b>標簽:粗體屬性定義。,
c、<i>標簽:斜體屬性定義。
d、<u>標簽:下劃線屬性定義。
這些標簽有各自的作用,在「自然」的前提下,可以適當的使用,以便讓網頁更有層次感,更能突出頁面內容重要性分級——但是這些標簽一定不要在每一個單網頁中都頻繁出現,或者在任何一個標簽中都加入幾個關鍵詞,這樣的優化會造成關鍵詞堆砌或者優化過度,往往適得其反。
第二、URL優化
URL優化是指通過對URL各組成部分進行適當的調整,以提高URL的搜索引擎友好度,提高用戶的記憶、理解、輸入的方便性.進而提高用戶體驗。
URL優化包括三大部分內容:
1.對域名、目錄、文件的命名
好的URL命名方式,應該能讓用戶通過URL即可很清楚地明白自己身處的網站位置。
2.URL中分隔符的使用
在URL中,很多看起來都是起分隔作用的符號其實意義是不一樣的,比如斜杠「/」是約定俗成的分隔符,用於URL中目錄之間或者目錄與文件名之間的分隔,而不能作為文件名中兩個詞語的分隔。
通常情況下,在CMS系統中的URL分隔符都有比較好的定義規范,不建議搜索引擎優化人員進行分隔符的修改。
3.URL長度和關鍵詞控制
URL長度為用戶體驗考慮,當然是越短越有意義、越容易記憶越好,但是在搜索引擎優化中,在URL中適當地包含關鍵詞是非常好的一種優化細節,通過關鍵詞的包含,用戶、搜索引擎都可以很方便地了解其含義。
這三部分之間相互制約、相互影響,最好的優化結果就是充分協調上述三個部分。
第三、關鍵詞布局與密度
在任何一個單網頁中,關鍵詞的布局和密度都是比較重要的。換句話說,如果關鍵詞布局設計得好,密度控制比較自然,那這個頁面的優化相對而言就比較成功。
1.關鍵詞密度
關鍵詞密度每個搜索引擎的標准都不一樣,有的控制很嚴,一般需要控制在2%~8%之內:有的根本不在乎,單頁面的關鍵詞密度30%也不會影響到排名。要檢查某個網頁的關鍵詞密度,可以採用站長站上的關鍵詞密度檢測工具。
通常情況下,對搜索引擎優化者而言,推薦的關鍵詞密度仍然是2%~8%,但是這並不是重點,重點是關鍵詞出現的布局和網頁內容的自然。
2.關鍵詞布局
關鍵詞的布局是優化細節中比較重要的一個部分,好的關鍵詞布局,應該在網頁標題、正文第一段、正文末尾、URL和鏈接等位置合理地出現關鍵詞。
但是,如果搜索引擎優化者死記硬背這一點,在所有的地方都試圖加入關鍵詞的話,往往就意味著優化過度。切記以自然為主,不用刻意進行關鍵詞堆砌。
第四、導入與導出鏈接
對單網頁來說,導入鏈接決定這個網頁的權重,導出鏈接決定這個網頁給其他網頁傳遞的權重。
在單網頁優化當中,導入鏈接可以包含站內的導入連接和站外的導入鏈接兩部分;導出鏈接也同樣分為導出到站內的鏈接和導出到站外的鏈接兩部分。
對單網頁的導入與導出鏈接而言,應該盡量遵循以下的原則:
a、單網頁的站內導入鏈接應該盡量多:也就是盡量在網站的內容鏈接中,形成更多指向網頁的鏈接。
b、單網頁的站外導入鏈接應該盡量多:盡量在其他網站上,建設指向此單網頁的外部導入鏈接。
c、單網頁的導出鏈接必須要有相關性:不管是單網頁的站內導出鏈接還是站外導出鏈接,都應該有密切的內容相關性。只有有相關性的導出鏈接,才能為用戶提供更好的用戶體驗,也才能更利於搜索引擎的排名。
對搜索引擎優化新手而言,導入/導出鏈接的建設相對單網頁的其他優化細節而言更不容易理解,其實記住以下這句話不但可以很好地判斷如何建設導入、導出鏈接,還能判斷其他的優化細節是否必要。
提醒:搜索引擎優化者應該站在普通網站訪問者的角度來審視網站,如果自己感覺需要的功能,則SEO就應該增加、擴展;如果自己都感覺不需要、不舒服、沒意義的功能,則SEO應該修改、刪除。
H. 網站代碼優化操作流程,如何給網站做代碼優化
給網站代碼做優化,可以從以下幾個方面進行:
1、head部分代碼規范化
head部分代碼是搜索引擎爬行網站的入口部分,將網站的代碼規范化,建立起網站獨一無二的head部分。
2、使用div+css布局網頁
大多數網頁都在用div+css另外,一些網站會使用外部文件,將css和js放在外部文件中,頁面html中只要放一樣代碼調用就可以了,
3、css優化
css是頁面效果呈現中非常重要的組成部分,它包括顏色、大小尺寸、背景和字體等。所有css定義代碼的位置要放到網站之前。網站上的一些圖片可以採用css sprite技術進行合並,減少載入請求次數,從而提高網頁的載入速度,減小css文件的大小,盡量不要使用內嵌式css。
將html控制方式轉換為CSS控制比如利用標簽內對內容進行控制,比如img標簽里通過width和height來控制圖片的大小,盡量將這些代碼轉換成外調式的CSS,使網頁代碼減少。
4、JS優化
將js放在頁面最後,這樣可以加快頁面打開速度。合並js合並相同域名下的js,通過減少網路連接次數從而提高網頁的打開速度。當前的搜索引擎還是不能夠識別JS代碼的,可以將用到Javascript代碼用外部調用的形式放在網站中,降低頁面對於JS的依賴性,尤其是頁面的關鍵位置如導航欄,盡量採用DIV+CSS的設計方法。
5、清除頁面中多餘的代碼,比如注釋代碼,減少頁面代碼的容量。
6、緩存靜態資源
通過設置瀏覽器緩存,將css、js等不太經常更新的文件緩存在瀏覽器端,這樣同一訪客再次訪問你的網站的時候,瀏覽器就可以從瀏覽器的緩存中獲取css、js等,在一定程度上加快了網站的打開速度,而不必每次都從你的伺服器讀取,節省伺服器流量。
7、網頁壓縮技術
啟用伺服器Gzip,對頁面Gzip壓縮,減少元素的體積,從而減少數據的傳輸,進而提高網頁的打開速度。
I. Java代碼如何優化
今天就跟中公優就業一起來看看java代碼優化細節。
1、盡量指定類、方法的final修飾符
帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String,整個類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以被重寫。如果指定了一個類為final,則該類所有的方法都是final的。Java編譯器會尋找機會內聯所有的final方法,內聯對於提升Java運行效率作用重大,具體參見Java運行期優化。此舉能夠使性能平均提高50%。
2、盡量重用對象
特別是String對象的使用,出現字元串連接時應該使用StringBuilder/StringBuffer代替。由於Java虛擬機不僅要花時間生成對象,以後可能還需要花時間對這些對象進行垃圾回收和處理,因此,生成過多的對象將會給程序的性能帶來很大的影響。
3、盡可能使用局部變數
調用方法時傳遞的參數以及在調用中創建的臨時變數都保存在棧中速度較快,其他變數,如靜態變數、實例變數等,都在堆中創建,速度較慢。另外,棧中創建的變數,隨著方法的運行結束,這些內容就沒了,不需要額外的垃圾回收。
4、及時關閉流
Java編程過程中,進行資料庫連接、I/O流操作時務必小心,在使用完畢後,及時關閉以釋放資源。因為對這些大對象的操作會造成系統大的開銷,稍有不慎,將會導致嚴重的後果。
5、盡量減少對變數的重復計算
明確一個概念,對方法的調用,即使方法中只有一句語句,也是有消耗的,包括創建棧幀、調用方法時保護現場、調用方法完畢時恢復現場等。所以例如下面的操作:
for (int i = 0; i < list.size(); i++){...}
建議替換為:
for (int i = 0, int length = list.size(); i < length; i++){...}
這樣,在list.size()很大的時候,就減少了很多的消耗
6、盡量採用懶載入的策略,即在需要的時候才創建
例如:
String str = "aaa";if (i == 1){list.add(str);}
建議替換為:
if (i == 1){String str = "aaa";list.add(str);}
7、慎用異常
異常對性能不利。拋出異常首先要創建一個新的對象,Throwable介面的構造函數調用名為fillInStackTrace()的本地同步方法,fillInStackTrace()方法檢查堆棧,收集調用跟蹤信息。只要有異常被拋出,Java虛擬機就必須調整調用堆棧,因為在處理過程中創建了一個新的對象。異常只能用於錯誤處理,不應該用來控製程序流程。
8、不要在循環中使用try…catch…,應該把其放在最外層
除非不得已。如果毫無理由地這么寫了,只要你的領導資深一點、有強迫症一點,八成就要罵你為什麼寫出這種垃圾代碼來了
9、如果能估計到待添加的內容長度,為底層以數組方式實現的集合、工具類指定初始長度
比如ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、HashSet等等,以StringBuilder為例:
(1)StringBuilder() // 默認分配16個字元的空間
(2)StringBuilder(int size) // 默認分配size個字元的空間
(3)StringBuilder(String str)// 默認分配16個字元+str.length()個字元空間
可以通過類(這里指的不僅僅是上面的StringBuilder)的來設定它的初始化容量,這樣可以明顯地提升性能。比如StringBuilder吧,length表示當前的StringBuilder能保持的字元數量。因為當StringBuilder達到最大容量的時候,它會將自身容量增加到當前的2倍再加2,無論何時只要StringBuilder達到它的最大容量,它就不得不創建一個新的字元數組然後將舊的字元數組內容拷貝到新字元數組中—-這是十分耗費性能的一個操作。試想,如果能預估到字元數組中大概要存放5000個字元而不指定長度,最接近5000的2次冪是4096,每次擴容加的2不管,那麼:
(1)在4096 的基礎上,再申請8194個大小的字元數組,加起來相當於一次申請了12290個大小的字元數組,如果一開始能指定5000個大小的字元數組,就節省了一倍以上的空間
(2)把原來的4096個字元拷貝到新的的字元數組中去
這樣,既浪費內存空間又降低代碼運行效率。所以,給底層以數組實現的集合、工具類設置一個合理的初始化容量是錯不了的,這會帶來立竿見影的效果。但是,注意,像HashMap這種是以數組+鏈表實現的集合,別把初始大小和你估計的大小設置得一樣,因為一個table上只連接一個對象的可能性幾乎為0。初始大小建議設置為2的N次冪,如果能估計到有2000個元素,設置成new HashMap(128)、new HashMap(256)都可以。
10、當復制大量數據時,使用System.array()命令