單頁面優(yōu)化搜外總結(jié)了以下幾點希望可以幫到你:
1、定義區(qū)域性內(nèi)容
針對單頁面網(wǎng)站,我們可以先將頁面劃分為幾個特定的區(qū)域,將每一個區(qū)域作為一個單獨的頁面來優(yōu)化。為每一個區(qū)域選擇關(guān)鍵詞、定義內(nèi)容、設(shè)置各種標(biāo)簽等。當(dāng)然要切記每個區(qū)域的關(guān)鍵詞都應(yīng)具有相關(guān)性。
2、使用DIV分割區(qū)域
將每一個區(qū)域用DIV分割開來,這樣能夠使得網(wǎng)頁的結(jié)構(gòu)更加清晰。
3、設(shè)置錨鏈接
搜索引擎都非常喜歡錨鏈接,與錨文本不同,錨鏈接能夠?qū)⒂脩魩胪豁撁娴奶囟▍^(qū)域。在單頁面網(wǎng)站優(yōu)化中,在每個區(qū)域設(shè)置特定的錨鏈接,正確為用戶導(dǎo)航,方便用戶在同一頁面內(nèi)找尋目標(biāo)信息。
4、為每一個區(qū)域設(shè)置H1 標(biāo)簽
通常情況下,一個頁面最多設(shè)置一個H1 標(biāo)簽,但是單頁面網(wǎng)站因為其獨特性,跟一般的網(wǎng)站不同。在單頁面網(wǎng)站的每個區(qū)域設(shè)置一個H1 標(biāo)簽有利于突出頁面結(jié)構(gòu),有助于搜索引擎明白網(wǎng)站架構(gòu)。但是切記每個區(qū)域設(shè)置一個H1 標(biāo)簽即可,不可頻繁使用。
5、避免全是圖片展示
很多企業(yè)使用單頁面網(wǎng)站,希望展示給用戶一種酷炫或者簡單的效果,所以網(wǎng)站里面添加很多圖片,但是這卻造成了網(wǎng)站文字內(nèi)容太少,不利于搜索引擎對網(wǎng)站的抓取和索引。
6、高質(zhì)量的網(wǎng)站內(nèi)容
作為單頁面網(wǎng)站,將用戶關(guān)注的需求點盡可能的完整的展示出來,是十分有必要的,所以這就需要高質(zhì)量的網(wǎng)站內(nèi)容,通過不同的區(qū)域展示相關(guān)的內(nèi)容介紹,提高用戶體驗。
所謂單頁應(yīng)用,指的是在一個頁面上集成多種功能,甚至整個系統(tǒng)就只有一個頁面,所有的業(yè)務(wù)功能都是它的子模塊,通過特定的方式掛接到主界面上。
它是AJAX技術(shù)的進一步升華,把AJAX的無刷新機制發(fā)揮到極致,因此能造就與桌面程序媲美的流暢用戶體驗。開發(fā)框架 ExtJS可以稱為第一代單頁應(yīng)用框架的典型,它封裝了各種UI組件,用戶主要使用JavaScript來完成整個前端部分,甚至包括布局。
隨著功能逐漸增加,ExtJS的體積也逐漸增大,即使用于內(nèi)部系統(tǒng)的開發(fā),有時候也顯得笨重了,更不用說開發(fā)以上這類運行在互聯(lián)網(wǎng)上的系統(tǒng)。 jQuery由于偏重DOM操作,它的插件體系又比較松散,所以比ExtJS這個體系更適合開發(fā)在公網(wǎng)運行的單頁系統(tǒng),整個解決方案會相對比較輕量、靈活。
但由于jQuery主要面向上層操作,它對代碼的組織是缺乏約束的。如何在代碼急劇膨脹的情況下控制每個模塊的內(nèi)聚性,并且適當(dāng)在模塊之間產(chǎn)生數(shù)據(jù)傳遞與共享,就成為了一種有挑戰(zhàn)的事情。
為了解決單頁應(yīng)用規(guī)模增大時候的代碼邏輯問題,出現(xiàn)了不少MV*框架,他們的基本思路都是在JS層創(chuàng)建模塊分層和通信機制。有的是MVC,有的是MVP,有的是MVVM,而且,它們幾乎都在這些模式上產(chǎn)生了變異,以適應(yīng)前端開發(fā)的特點。
這類框架包括Backbone,Knockout,AngularJS,Avalon等。組件化 這些在前端做分層的框架推動了代碼的組件化,所謂組件化,在傳統(tǒng)的Web產(chǎn)品中,更多的指UI組件,但其實組件是一個廣泛概念,傳統(tǒng)Web產(chǎn)品中UI組件占比高的原因是它的厚度不足,隨著客戶端代碼比例的增加,相當(dāng)一部分的業(yè)務(wù)邏輯也前端化,由此催生了很多非界面型組件的出現(xiàn)。
分層帶來的一個優(yōu)勢是,每層的職責(zé)更專一了,由此,可以對其作單元測試的覆蓋,以保證其質(zhì)量。傳統(tǒng)UI層測試最頭疼的問題是UI層和邏輯混雜在一起,比如往往會在遠(yuǎn)程請求的回調(diào)中更改DOM,當(dāng)引入分層之后,這些東西都可以分別被測試,然后再通過場景測試來保證整體流程。
代碼隔離 與開發(fā)傳統(tǒng)頁面型網(wǎng)站相比,實現(xiàn)單頁應(yīng)用的過程中,有一些比較值得特別關(guān)注的點。 從單頁應(yīng)用的特點來看,它比頁面型網(wǎng)站更加依賴于JavaScript,而由于頁面的單頁化,各種子功能的JavaScript代碼聚集到了同一個作用域,所以代碼的隔離、模塊化變得很重要。
在單頁應(yīng)用中,頁面模板的使用是很普遍的。很多框架內(nèi)置了特定的模板,也有的框架需要引入第三方的模板。
這種模板是界面片段,我們可以把它們類比成JavaScript模塊,它們是另一種類型的組件。 模板也一樣有隔離的需要。
不隔離模板,會造成什么問題呢?模板間的沖突主要存在于id屬性上,如果一個模板中包含固定的id,當(dāng)它被批量渲染的時候,會造成同一個頁面的作用域中出現(xiàn)多個相同id的元素,產(chǎn)生不可預(yù)測的后果。因此,我們需要在模板中避免使用id,如果有對DOM的訪問需求,應(yīng)當(dāng)通過其他選擇器來完成。
如果一個單頁應(yīng)用的組件化程度非常高,很可能整個應(yīng)用中都沒有元素id的使用。代碼合并與加載策略 人們對于單頁系統(tǒng)的加載時間容忍度與Web頁面不同,如果說他們愿意為購物頁面的加載等待3秒,有可能會愿意為單頁應(yīng)用的首次加載等待5-10秒,但在此之后,各種功能的使用應(yīng)當(dāng)都比較流暢,所有子功能頁面盡量要在1-2秒時間內(nèi)切換成功,否則他們就會感覺這個系統(tǒng)很慢。
從這些特點來看,我們可以把更多的公共功能放到首次加載,以減小每次加載的載入量,有一些站點甚至把所有的界面和邏輯全部放到首頁加載,每次業(yè)務(wù)界面切換的時候,只產(chǎn)生數(shù)據(jù)請求,因此它的響應(yīng)是非常迅速的,比如青云的控制臺就是這么做的。 通常在單頁應(yīng)用中,無需像網(wǎng)站型產(chǎn)品一樣,為了防止文件加載阻塞渲染,把js放到html后面加載,因為它的界面基本都是動態(tài)生成的。
當(dāng)切換功能的時候,除了產(chǎn)生數(shù)據(jù)請求,還需要渲染界面,這個新渲染的界面部件一般是界面模板,它從哪里來呢?來源無非是兩種,一種是即時請求,像請求數(shù)據(jù)那樣通過AJAX獲取過來,另一種是內(nèi)置于主界面的某些位置,比如script標(biāo)簽或者不可見的textarea中,后者在切換功能的時候速度有優(yōu)勢,但是加重了主頁面的負(fù)擔(dān)。 在傳統(tǒng)的頁面型網(wǎng)站中,頁面之間是互相隔離的,因此,如果在頁面間存在可復(fù)用的代碼,一般是提取成單獨的文件,并且可能會需要按照每個頁面的需求去進行合并。
單頁應(yīng)用中,如果總的代碼量不大,可以整體打包一次在首頁載入,如果大到一定規(guī)模,再作運行時加載,加載的粒度可以搞得比較大,不同的塊之間沒有重復(fù)部分。路由與狀態(tài)的管理 管理路由的目的是什么呢?是為了能減少用戶的導(dǎo)航成本。
比如說我們有一個功能,經(jīng)歷過多次導(dǎo)航菜單的點擊,才呈現(xiàn)出來。如果用戶想要把這個功能地址分享給別人,他怎么才能做到呢? 傳統(tǒng)的頁面型產(chǎn)品是不存在這個問題的,因為它就是以頁面為單位的,也有的時候,服務(wù)端路由處理了這一切。
但是在單頁應(yīng)用中,這成為了問題,因為我們只有一個頁面,界面上的各種功能區(qū)塊是動態(tài)生成的。所以我們要通過對路由的管理,來實現(xiàn)這樣的功能。
具體的做法就是把產(chǎn)品功能劃分為若干狀態(tài),每個狀。
引言 Web頁面是無狀態(tài)的, 服務(wù)器對每一次請求都認(rèn)為來自不同用戶,因此,變量的狀態(tài)在連續(xù)對同一頁面的多次請求之間或在頁面跳轉(zhuǎn)時不會被保留。在用ASP.NET 設(shè)計開發(fā)一個Web系統(tǒng)時, 遇到一個重要的問題是如何保證數(shù)據(jù)在頁面間進行正確、安全和高效地傳送,Asp.net 提供了狀態(tài)管理等多種技術(shù)來解決保存和傳遞數(shù)據(jù)問題,以下來探討.NET 下的解決此問題的各種方法和各自的適用場合。
1、ASP.NET頁面間數(shù)據(jù)傳遞的各種方法和分析
1.1 使用Querystring 方法
QueryString 也叫查詢字符串, 這種方法將要傳遞的數(shù)據(jù)附加在網(wǎng)頁地址(URL)后面進行傳遞。如頁面A.aspx 跳轉(zhuǎn)到頁面B.aspx,可以用Request.Redirect("B.aspx?參數(shù)名稱=參數(shù)值")方法,也可以用超鏈接:,頁面跳轉(zhuǎn)后,在目標(biāo)頁面中可用Ruquest["參數(shù)名稱"]來接收參數(shù)。使用QuerySting 方法的優(yōu)點是實現(xiàn)簡單, 不使用服務(wù)器資源;缺點是傳遞的值會顯示在瀏覽器的地址欄上,有被篡改的風(fēng)險,不能傳遞對象,只有在通過URL 請求頁時查詢字符串才是可行的。
1.2 利用隱藏域
隱藏域不會顯示在用戶的瀏覽器中, 一般是在頁面中加入一個隱藏控件, 與服務(wù)器進行交互時把值賦給隱藏控件并提交給下一頁面。隱藏域可以是任何存儲在網(wǎng)頁中的與網(wǎng)頁有關(guān)的信息的存儲庫。使用隱藏域存入數(shù)值時用:hidden 控件.value=數(shù)值,取出接收數(shù)值時用:變量=hidden 控件.value。使用隱藏域的優(yōu)點是實現(xiàn)簡單, 隱藏域是標(biāo)準(zhǔn)的HTML 控件,不需要復(fù)雜的編程邏輯。隱藏域在頁上存儲和讀取,不需要任何服務(wù)器資源,幾乎所有瀏覽器和客戶端設(shè)備都支持具有隱藏域的窗體。缺點是存儲結(jié)構(gòu)少,僅僅支持簡單的數(shù)據(jù)結(jié)構(gòu),存儲量少,因為它被存儲在頁面本身,所以無法存儲較大的值,而且大的數(shù)據(jù)量會受到防火墻和代理的阻止。
網(wǎng)頁布局方法很多,根據(jù)各人不同的喜好布局也不同:通常的布局方法有以下幾種:
一.通過表格來布局
表格布局的優(yōu)勢在于它能對不同對象加以處理,而又不用擔(dān)心不同對象之間的影響。而且表格在定位圖片和文本上比起用CSS更加方便。表格布局唯一的缺點是,當(dāng)你用了過多表格時,頁面下載速度受到影響
二.通過層疊樣式表來布局
CSS(層疊樣式表)被提出來,它能完全精確的定位文本和圖片。CSS對于初學(xué)者來說顯得有點復(fù)雜,但它的確是一個好的布局方法。你曾經(jīng)無法實現(xiàn)的想法利用CSS都能實現(xiàn)
三.通過框架來布局
框架結(jié)構(gòu)的頁面被許多人不喜歡,可能是因為它的兼容性。但從布局上考慮,框架結(jié)構(gòu)不失為一個好的布局方法。它如同表格布局一樣,把不同對象放置到不同頁面加以處理,因為框架可以取消邊框,所以一般來說不影響整體美觀
四.當(dāng)然還有其他的布局方式,比如你可以在紙上布局,就是先在紙上畫草圖,然后再按照圖來做
<?php
$Action = $_GET['Action'];
switch ($Action) {
case '': action_1();break;
case '1': action_1();break;
case '2': action_1();break;
case '3': action_1();break;
}
第一個辦法適用于你調(diào)用你已經(jīng)定義好的方法。 而二個適用于控制頁面上不同的顯示。 你剛才無法運行的原因是action_1()方法你還沒有定義。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:3.427秒