2010-11-21 160 views
6

首先,來看看這個演示頁面:http://vidasp.net/tinydemos/seo-javascript-links.htmlJavaScript鏈接和搜索引擎優化?

還有就是頁面上的菜單,點擊菜單項就會顯示各種鏈接到其他網站的頁面(即是網址的一部分) 。鏈接網址的格式如下:

www . foo . com/articles/XXX/descriptive-title-of-the-article 

...其中XXX是給定文章的三位ID。

這一切似乎都不錯,但有一個問題:所有這些鏈接通過JavaScript動態創建。查看源代碼 - 在頁面底部有一個JavaScript變量(db變量),它包含用於生成鏈接的所有數據。

我正在使用JavaScript,因爲我不想使用服務器端。我假設,在這種情況下,我將不得不將數據存儲在SQL數據庫中,然後使用C#/ PHP /等。生成鏈接。但是,這不是我的選擇 - 我嚴格面向客戶端的 。

順便說一句,如果你想看到更精細的JavaScript生成鏈接演示,請點擊這裏 - http://www.w3viewer.com - 該網頁上有400個鏈接,所有鏈接都是通過JavaScript動態生成的。

問題:

現在,我喜歡這種方法 - 使用JavaScript來生成鏈接 - 然而,這種做法的後果是,搜索引擎爬蟲不會登記任何這些鏈接 - 他們只是「看到」一個沒有鏈接的空白頁面(我認爲這是一個SEO災難)。

所以,我想知道,我怎麼能優化這種方法?

更新(後續問題):

我不能使用谷歌地圖,告訴谷歌爬蟲其在web站點存在網頁的頁面?這樣我就可以保持首頁(上面的演示)(沒有靜態鏈接),並且抓取工具會使用站點地圖抓取我網站上的所有網頁。

我不知道谷歌的Sitemaps做任何事,但我想知道爲什麼沒有人建議他們。他們可以解決我的問題嗎?

+3

只是想知道,什麼都會沒有JavaScript的用戶看到了什麼?當我禁用JS時,我得到** no **鏈接。任何你爲什麼不想讓你的鏈接生成服務器端? – Marko 2010-11-21 20:29:17

+1

Marko,JS今天是標準。沒有人期望人們編寫與無JS瀏覽器兼容的網站。 – Kos 2010-11-21 20:31:18

+0

@Marko沒有JavaScript的用戶什麼也看不到,顯然:)嘗試訪問W3瀏覽器禁用JavaScript - 這裏沒有什麼...另外,請嘗試訪問W3瀏覽器與IE,並檢查出重定向:p – 2010-11-21 20:31:30

回答

3

看起來你真正需要做的是在部署之前使用模板生成HTML,使用類似Template::Toolkitttree。然後,您可以將您的數據庫保存在您的開發機器上。不需要JavaScript。

下面是一個簡化的例子:

[%- 
db = { 
    Foo => [ 
     { id => "001", title => "First article" }, 
     { id => "002", title => "Another article" }, 
     { id => "003", title => "Yet another article" }, 
    ], 
    Bar => [ 
     { id => "004", title => "First article in this category" }, 
     { id => "005", title => "Another article in bar" }, 
     { id => "006", title => "Third bar article" }, 
    ], 
    Baz => [ 
     { id => "007", title => "Baz article No. 1" }, 
     { id => "008", title => "The second Baz article" }, 
     { id => "009", title => "The last article" }, 
    ], 
} 
-%] 

[%- FOR category IN db.keys -%] 

<h2>[%- category -%]</h2> 

[%- articles = db.$category -%] 

[%- FOR article IN articles -%] 

<p>Article: <a href="http://www.example.com/articles/[%- article.id -%]/"> 
    [%- article.title -%]</a></p> 

[%- END -%] 
[%- END -%] 
C:\Temp> tpage t.html
<h2>Bar</h2> 

<p>Article: <a href="http://www.example.com/articles/004">First article in this 
category</a></p> 

<p>Article: <a href="http://www.example.com/articles/005">Another article in bar 
</a></p> 

<p>Article: <a href="http://www.example.com/articles/006">Third bar article</a>< 
/p> 

<h2>Baz</h2> 

<p>Article: <a href="http://www.example.com/articles/007">Baz article No. 1</a>< 
/p> 

&hellip;

+0

@Sinan我也在想這個。但是,數據庫條目 - 「{id:」001「,標題:」第一條「} - 和HTML輸出 - 」The first article「之間的大小差異很大。有了100個鏈接,我的頁面上會有額外的10K。我希望避免這種情況。 – 2010-11-21 20:40:42

+0

那麼,你可以使用:'The first article'這應該減少一些大小(假設這些文章在同一臺服務器上)。另外,如果'gzip'壓縮打開,額外的10K應該不會引人注目(應該測試這個;-) – 2010-11-21 20:46:05

+0

@Sinan謝謝你的例子,但我可以通過JavaScript輕鬆生成HTML代碼(如果我願意你的方法和「預編譯」HTML代碼)。 – 2010-11-21 20:49:51

0

同時使用js和href ... 訣竅是隻需要網站的href工作,這是什麼谷歌機器人將看到 在同一時間,如果瀏覽器支持使用js點擊處理程序。

當然從處理程序返回false也停止href。

0

您可以使用<noscript> All your anachor links here</noscript>這意味着抓取工具和javascript關閉的用戶也會看到鏈接。你永遠不應該忘記沒有javascript的用戶,並且基於javascript的頁面功能(不提供無腳本選擇),這也將使你在SEO方面受益。

+1

Guard這意味着我將不得不在服務器端生成這些錨點,這正是我想要避免的。 – 2010-11-21 20:43:21

1

如果您因爲更喜歡使用JavaScript到其他語言而避開服務器端,那麼您始終可以在服務器上使用node.js。已經有支持Express的a jQuery Templates view engine for node.js,所以您甚至可以在客戶端或服務器上使用相同的模板。

無關:您不應該在CDN上使用對jQuery的「最新」引用(即1.4 vs 1.4.4)。這些要求are served with a very short expires header,這是一個很大的性能劣勢。此時,如果您只使用自託管副本,則返回訪問者的速度會更快。

+0

+1是的,我對node.js感興趣。在服務器端使用JavaScript將是解決我的問題的好方法。但是,我將不得不進一步研究它,因爲我目前對node.js沒有經驗。你可以告訴我,我需要什麼樣的託管服務。我目前有ASP.net託管... – 2010-11-21 21:17:41

+0

我可以保證它很容易設置在運行Ubuntu的VPS上。您可以使用Cygwin在Windows上運行它,但我不知道它與直接支持的環境相比有多穩定。也請查看http://no.de – 2010-11-22 00:29:36

1

只是一個快速的事情要注意,如果您的網站地圖中包含的鏈接無法通過抓取您的網站獲得,您將被標記在搜索引擎中。由於這些頁面被視爲與大多數主要搜索引擎相對的門戶頁面,也沒有引用網址,所以他們將得到非常低的分數,即使他們確實被索引,他們也不會很好地排名。

+0

+1是的,似乎只使用站點地圖對我來說不是一個解決方案。 – 2010-11-22 17:14:54

0

使用站點地圖有助於您的網頁能夠被Google抓取,但Google會通過網頁標題+內容對您進行排名。此外,如果你使用永久鏈接(你已經在使用),並且頁面標題也存在於身體內部的h1標籤中,那將會很棒。

你最好把一些內容作爲HTML內的身體。你應該用javascript來豐富頁面功能。但是,Google網頁完全是JavaScript,它也不喜歡JavaScript。這是統治者,直到它識別出JavaScript內容,我們都應該採用規則。

如果你想添加一個站點地圖,你可以使用下面的腳本。

要頂:

<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 

重複URL列表。隨着時間的推移區,優先考慮0到1日期,默認爲0.5:

<url> 
<loc>page url</loc> 
<lastmod>2011-02-06T03:13:29+02:00</lastmod> 
<changefreq>monthly</changefreq> 
<priority>0.7</priority> 
</url> 

結束:

</urlset> 
相關問題