国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

Categories


Tags


如何讓搜索引擎抓取AJAX內(nèi)容?

越來越多的網(wǎng)站,開始采用"單頁面結構"(Single-page application)。

整個網(wǎng)站只有一張網(wǎng)頁,采用Ajax技術,根據(jù)用戶的輸入,加載不同的內(nèi)容。

如何讓搜索引擎抓取AJAX內(nèi)容? 搜索引擎 好文分享 第1張

這種做法的好處是用戶體驗好、節(jié)省流量,缺點是AJAX內(nèi)容無法被搜索引擎抓取。舉例來說,你有一個網(wǎng)站。

http://example.com

用戶通過井號結構的URL,看到不同的內(nèi)容。

http://example.com#1

http://example.com#2

http://example.com#3

但是,搜索引擎只抓取example.com,不會理會井號,因此也就無法索引內(nèi)容。

為了解決這個問題,Google提出了"井號+感嘆號"的結構。

http://example.com#!1

當Google發(fā)現(xiàn)上面這樣的URL,就自動抓取另一個網(wǎng)址:

http://example.com/?_escaped_fragment_=1

只要你把AJAX內(nèi)容放在這個網(wǎng)址,Google就會收錄。但是問題是,"井號+感嘆號"非常難看且煩瑣。Twitter曾經(jīng)采用這種結構,它把

http://twitter.com/ruanyf

改成

http://twitter.com/#!/ruanyf

結果用戶抱怨連連,只用了半年就廢除了。

那么,有沒有什么方法,可以在保持比較直觀的URL的同時,還讓搜索引擎能夠抓取AJAX內(nèi)容?

我一直以為沒有辦法做到,直到前兩天看到了Discourse創(chuàng)始人之一的Robin Ward的解決方法,不禁拍案叫絕。

如何讓搜索引擎抓取AJAX內(nèi)容? 搜索引擎 好文分享 第2張

Discourse是一個論壇程序,嚴重依賴Ajax,但是又必須讓Google收錄內(nèi)容。它的解決方法就是放棄井號結構,采用 History API。

所謂 History API,指的是不刷新頁面的情況下,改變?yōu)g覽器地址欄顯示的URL(準確說,是改變網(wǎng)頁的當前狀態(tài))。這里有一個例子,你點擊上方的按鈕,開始播放音樂。然后,再點擊下面的鏈接,看看發(fā)生了什么事?

如何讓搜索引擎抓取AJAX內(nèi)容? 搜索引擎 好文分享 第3張

地址欄的URL變了,但是音樂播放沒有中斷!

History API 的詳細介紹,超出這篇文章的范圍。這里只簡單說,它的作用就是在瀏覽器的History對象中,添加一條記錄。

window.history.pushState(state object, title, url);

上面這行命令,可以讓地址欄出現(xiàn)新的URL。History對象的pushState方法接受三個參數(shù),新的URL就是第三個參數(shù),前兩個參數(shù)都可以是null。

window.history.pushState(null, null, newURL);

目前,各大瀏覽器都支持這個方法:Chrome(26.0+),F(xiàn)irefox(20.0+),IE(10.0+),Safari(5.1+),Opera(12.1+)。

下面就是Robin Ward的方法。

首先,用History API替代井號結構,讓每個井號都變成正常路徑的URL,這樣搜索引擎就會抓取每一個網(wǎng)頁。

example.com/1

example.com/2

example.com/3

然后,定義一個JavaScript函數(shù),處理Ajax部分,根據(jù)網(wǎng)址抓取內(nèi)容(假定使用jQuery)。

function anchorClick(link) {

var linkSplit = link.split('/').pop();

$.get('api/' + linkSplit, function(data) {

$('#content').html(data);

});

}

再定義鼠標的click事件。

$('#container').on('click', 'a', function(e) {

window.history.pushState(null, null, $(this).attr('href'));

anchorClick($(this).attr('href'));

e.preventDefault();

});

還要考慮到用戶點擊瀏覽器的"前進 / 后退"按鈕。這時會觸發(fā)History對象的popstate事件。

window.addEventListener('popstate', function(e) {

anchorClick(location.pathname);

});

定義完上面三段代碼,就能在不刷新頁面的情況下,顯示正常路徑URL和AJAX內(nèi)容。

最后,設置服務器端。

因為不使用井號結構,每個URL都是一個不同的請求。所以,要求服務器端對所有這些請求,都返回如下結構的網(wǎng)頁,防止出現(xiàn)404錯誤。

<html>

<body>

<section id='container'></section>

<noscript>

... ...

</noscript>

</body>

</html>

仔細看上面這段代碼,你會發(fā)現(xiàn)有一個noscript標簽,這就是奧妙所在。

我們把所有要讓搜索引擎收錄的內(nèi)容,都放在noscript標簽之中。這樣的話,用戶依然可以執(zhí)行AJAX操作,不用刷新頁面,但是搜索引擎會收錄每個網(wǎng)頁的主要內(nèi)容!

(完)

文章來源:阮一峰的網(wǎng)絡日志

來源:盧松松博客


Public @ 2023-01-30 16:17:19

域名的基本知識

1、域名(Domain Name)是指將網(wǎng)址和特定 Internet 資源(如 Web 站點和郵件服務器)關聯(lián)起來的一種網(wǎng)絡服務,它可以把復雜地址轉(zhuǎn)換為易于使用的字符串; 2、URL(Uniform Resource Locator), 全稱為“統(tǒng)一資源定位器”,是一種互聯(lián)網(wǎng)資源的地址; 3、主機名(hostname),是一個網(wǎng)站(web site)或者其他 Internet 資源的正式名稱。

Public @ 2023-02-27 10:00:26

網(wǎng)站備案被注銷后的應對辦法

1. 查明原因 網(wǎng)站備案被注銷后,首先要查明注銷的原因,可能是違反了備案規(guī)定,也可能是備案資料過期或不完整等原因。要及時聯(lián)系備案單位或相關部門,了解具體情況。 2. 補全備案資料 如果備案資料不完整,需要及時補全,包括網(wǎng)站信息、服務器信息、上傳證明文件等。如果過期,需要重新提交備案申請并通過審核。 3. 向相關部門申請復審 需要向相關部門申請復審,提供相關材料,證明網(wǎng)站已經(jīng)按照要求進行了

Public @ 2023-04-26 09:00:15

seo意義

SEO(搜索引擎優(yōu)化),是指對網(wǎng)站的內(nèi)容、結構、鏈接等進行相應優(yōu)化,以提高網(wǎng)站的搜索引擎收錄度和搜索排名,最終提高網(wǎng)站的流量,達到增加客戶數(shù)量和訂單總量,實現(xiàn)公司推廣目標的一種網(wǎng)絡營銷技術。

Public @ 2023-02-28 10:00:14

seo發(fā)展狀況

SEO(搜索引擎優(yōu)化)是指通過優(yōu)化網(wǎng)站結構、內(nèi)容和鏈接,提高網(wǎng)站排名,從而吸引更多有價值的流量并提升網(wǎng)站的轉(zhuǎn)化率。以下是當前SEO發(fā)展狀況的一些趨勢和變化: 1. 機器學習和人工智能技術的發(fā)展正在加速搜索引擎算法的優(yōu)化。 2. 越來越多的搜索請求是通過移動設備進行的,因此移動優(yōu)化成為了SEO領域中的重要趨勢。 3. 搜索結果的豐富多樣化,如功能塊、圖像搜索、視頻搜索,以及人口統(tǒng)計數(shù)據(jù)等,也對

Public @ 2023-04-01 20:50:32

更多您感興趣的搜索

0.516057s