SEO 優化? 先談談其中的 SEF

什麼是 SEF ?

SEF ( Search Engine Friendly ) 搜尋引擎友善,也有人稱之為 Technical SEO(技術 SEO)。簡單來說就是讓拜訪網站的機器人比較容易作業的技能,在 SEO 裡面只能算是冰山一角。

工程師在工作上常常被主管要求改善網站的 SEO ,卻不能改變其中的文字與圖片,這算哪門子的 SEO,頂多只能算 SEF。SEO 是較為全面的行銷,可以延伸到 PPC 、整體文案內容、社群經營、線下活動、UI排版、UX...都會對 SEO 造成影響。

對於說自己拚命改善 SEO 實際上只有做 SEF 的人,我真的不知道要怎麼溝通,因為 SEO 主要還是靠內容與其權威性。


扯遠了,還是回來看 SEF 吧。

HTML Meta tag

  • title:網頁名稱。就如它的名稱,是這個網頁頁面的標題,也是在搜尋結果中呈現的名稱。
  • description:網頁描述,雖然在SEF中的比重極小,但還要要填。 
  • property="og:xxx":Facebook 中呈現的樣貌。在台灣 FB 就是最大的社群網站,你不得不服。當然還有像是 twitter 之類的社群網站也有它們專用的 tag。詳見:The Open Graph protocol 和 twitter cards
以 SEF 的角度來說,title 和 description 這兩個是必要的,當然還有像是 charset、http-equiv、viewport 這些必要的東西,不過這三個會影響 RWD 的東西有誰不知道要加嗎?

你說 robots 跟 keywords 呢?基本上 robots 只有在你要下 nofollow 或 noindex  的時候才會用到;keywords ....都 2017 年了,別再考慮這個東西。


HTML Link tag

  • canonical:指向的網頁,跟網頁權重有關。比方說,一個頁面有上百筆資料,你想一次呈現 10 筆,然後靠網址的變動程現不同筆的資料,這些網頁就需要加上這個避免流量分散。
    另一個情況是「桌機、行動裝置」網頁,因為這兩頁內容相同,也必需加上這個 tag 指向其中一個主要的網頁,要不然會打架互相搶流量與重覆內容被 google 打槍,其中之一在搜尋引擎消失(桌機只找到手機版網頁這種尷尬情況)。詳見:標準網址 。
  • dns-prefetch:可以預先加載第三方的 JS,例如 Clarity、 GA 等。
  • preload:也是預先加載的方式之一,但這是針對自己站內的檔案。詳見 MDN 寫的說明
其它還有像 shortcut icon、search、apple-touch-icon-precomposed...這些就因人而異了。
順帶一提,shortcut icon 不一定要用 ico 檔,你可以這樣寫:

<link rel="icon" href="/img/favicon.svg" type="image/svg+xml">
<link rel="icon alternate" href="/img/favicon.png" type="image/png" sizes="180x180">
<link rel="shortcut icon" href="/img/favicon.png" sizes="180x180">


HTML5

每個 HTML tag 都有它預定的任務,當然你要從頭 div 到尾也沒有什麼不行。不過,既然它都提供那麼多種類的 tag 了,不用一下嗎?
  • h1~h6

    類似主標題與副標題這類的權重概念,h1 的權重接近 title ,且最好一頁只有一個。要操作關鍵字的話,除了內容之外這些 tag 就是你的好朋友。
  • header、main、footer

     語意化的HTML:類似 table 的 thead、tbody、tfoot。
  • section、article、aside、nav

    一樣是語意化的HTML:前兩者類似段落的概念,可以互包,aside 類似側邊欄之類的輔助內容,nav 類似 menu。
  • a tag 的 rel Attribute

    如果你走火入魔的話,可以把 target="_blank" 開新分頁的方式加上 rel="external" ,另外 W3C 認為開新分頁是對使用者不友善的行為。這點我語帶保留,看連結的功用是什麼。
    其它 rel Attribute

    至於 target="_blank" 有安全性與性能問題,可以在 rel 加入 noopener 解決 (firefox是 noreferrer,所以也會看到兩種都加的開發者 rel="noopener noreferrer" ),確保其安全性。



少用 style Attribute

網頁效能會吃比較多。這點不光是 SEF 的問題,還有程式碼整潔度與維護性的問題,下略一千字。


盡量不要用 JavaScript 產生內容

Rendering AJAX-crawling pages

關於這點,Google 說他們的機器人對於 JavaScript 的解讀有所進展,至於進展到什麼程度並沒有明說。

當然,如果你用的是 vue、Angular、React 等常見的 JS 框架,在有做好 SEF 的前提下是沒有問題的。



CSS、HTML、JS 與圖片檔的大小

與網頁載入速度有關,其中圖片佔七成。程式檔線上的版本記得壓縮,圖片的話網路上也有各種無損壓縮的網站和工具。
你說因為要應對 retina 所以圖片兩倍大?孩子,HTML 還有 srcsetpicture 給你選用。

而 chrome 75 還支援原生的圖片延遲載入: loading="lazy"。

另外圖片和文字盡量分離,圖片辨識現在是找圖片附近的文字或 alt,如果文字直接畫在圖上機器人不會知道,不過未來就不一定了,畢竟google自己就有Vision AI這個產品。


內部連結要確實

機器人進入網站之後是靠連結在網頁與網頁之間移動,不要忘了讓你網站內的網頁能夠互相連結,不要讓某一頁變成邊緣人。若連結有用js寫功能,記得也要考慮no js 按下去到達的連結。

robots.txt 與 sitemap.xml

這就是非常單純的 SEF,因為就是做給 bot 看的,可以分成好幾個 xml 方便管理,例如讓一些站內搜尋結果不要出現在站外的搜尋引擎之中。而比較重要的還是給人看的 sitemap 頁面,除了能讓各網頁確實互連不形成孤兒外,也別忘了網站做出來是要給人用的。

讓網站收錄到 search console

search console 是 Goole 的一個網站狀態管理工具,可以簡單得知一些問題並做修改。而不只是Google而已,bing(yahoo)和 baidu 等搜尋引擎也有其自己的網站管理員工具可以讓我們使用。

 

結構化資料 schema 標記

讓機器人可以知道這一段 HTML 或 網頁是什麼類型的東西,讓搜尋引擎可以順利解析網頁內容,進而精準的提供符合搜尋引擎使用者的需求內容。

比較常用的方式:Microdata、JSON-LD 與較少見的 Microformats、RDFa。

Microdata 寫法是利用 HTML tag 的 Attribute 一層包一層。
JSON-LD 寫法則類似 object ,與HTML分離,這可以讓原始碼看起來整潔一點。
Microformats 則是用特定的 class name 作劃分,不會像 
Microdata 因為一堆 Attribute 而亂槽槽。

這個網站有所有的類型與基本範例:https://schema.org/ 
org 後面加上 .cn 是簡中版,但不建議使用,因為內容少很多。或者你也可以看 Google 寫的範例,讀起來會輕鬆一點。


Google 也有提供測試的工具:結構化資料測試工具


* yahoo 和 bing 2018年7、8月左右開始看得懂 JSON-LD。

網站讀取速度

 不管是不是為了爬蟲,這都很重要。可以詳讀這篇〈網站使用體驗核心指標 LCP、FID、CLS〉的介紹。


結語

以上就是一些大家常常在優化的 SEF,在不是大企業或是高權重網站的情況下,拚死拚活做好SEF其實只是九牛一毛,對於SEO搜尋排名的效果非常有限,這也是我在文章開頭不知道怎麼對那些人溝通的原因。

最後,你的網頁內容才是最重要的,好的網站就算沒有 SEF 也可以有很高的流量,當你在做網站 SEO 時,一定可以體會到見山是山,見山不是山,見山還是山;SEF 做到最好,沒有內容的網頁也只是搜尋結果的分母而已,永遠不會進入使用者的視線。 

另外,可以參考 GOOGLE 在 2017年12月寫的 SEO入門指南

留言

這個網誌中的熱門文章

用CSS的 min() max() 與vw,設計有極限值的RWD響應式文字

10 steps、「ライブ会場を沸らせる、フロアを沸かす」ミーム動画の作り方 (Viggle AI)

運用資料層 dataLayer.push 建立 GTM 自訂事件