[譯] 如何修改域名來提升國際增加率

如何修改域名來提升國際增加率

Christian Miranda | Growth 部門軟件工程師前端

在 Pinterest 上的 2 億月活躍用戶中,其中有超過半數的用戶在美國以外的地方使用咱們的 app。爲了給全球用戶提供更好的服務,咱們將持續改進 Pinterest。咱們已經將流量轉移到了國家代碼頂級域名 (ccTLDs)。例如如今服務於德國的是 www.pinterest.de 而再也不是 www.pinterest.com. 這裏咱們將深刻討論如何幫助提升增加的細節,並討論在整個過程當中遇到的一些工程挑戰。android

一切盡在域名中

Pinterest 自 2010 年成立以來,該網站的每一頁都託管在 www.pinterest.com. 上。上線幾年後,爲了讓咱們的內容能夠按國家劃分併爲 Pinterest 提供本地化和相關體驗,咱們引進了 country 子域名 (如 de.pinterest.com)。這改善了搜索引擎的優化 (SEO) 和整體增加,由於國家子域名在全球搜索結果中排名更高,更多的人羣發現了使用他們語言的相關內容。ios

下一步是實現 ccTLDs。經過調查,咱們瞭解到一些作出改變的網站所呈現中立或負面增加的現象,儘管業界對 ccTLDs 見解是它在許多搜索引擎算法中提供了一個更強烈的地理定位信號,用戶可能會點擊以本地域名結尾的結果(這會積極影響搜索排名以致使更高的的點擊率)。咱們想對它們進行測試,觀察他們將如何做用於 Pinterest 和咱們多樣化的內容目錄。git

不只僅是重定向:切換域名的挑戰

從表面上看,這個項目看起來很簡單--咱們所要作的就是提供咱們想要的新的 ccTLDs 並設置重定向來開始給它們流量。然而很明顯,修改咱們網站的頂級域名須要對咱們的基礎設施進行重大的改變。github

跨域認證

Pinterest 上的身份驗證很是標準。咱們有一個處理用戶名/密碼註冊的內部用戶服務,對那些第三方(如 Facebook)認證採用 OAuth 開放標準。咱們會在用戶每次訪問 www.pinterest.com. 時,取回後端返回的令牌並對其進行身份驗證。web

隨着 ccTLDs 的引入,咱們須要支持對用戶進行身份驗證的功能,不管他們訪問的是哪一個域名。咱們的解決方案是創建一個域名中心(accounts.pinterest.com)做爲全部登陸的惟一驗證源。算法

簡而言之,Pinterest ccTLDs 與域名中心通訊以肯定身份驗證狀態,並設置客戶端 cookie 來提供鏡像。下一節將描述這種通訊,咱們稱之爲 auth 握手。後端

auth 握手

握手的通常流程是:跨域

1.在註冊或登陸期間,將從訪問域 (例如,www.pinterest.abc) 調用 API 以肯定身份驗證狀態。 2.若是用戶登陸了 accounts.plnterest.com,他們將自動登陸 www.pinterest.abc.。 3.若是用戶沒有登陸 accounts.pintertst.com,咱們將生成一個訪問令牌,並在這兩個域名上的 cookie 中設置它,這引導了域名中心的後續訪問,所以能夠進行第二步。瀏覽器

第一步中存在一個問題:同源策略規定「只有當兩個網頁同源時,一個網頁上的腳本才能夠訪問另外一個網頁上的數據。」這是互聯網安全的支柱,也是阻止惡意網站上 JavaScript 訪問我的或敏感信息的手段。在 auth 握手狀況下,因爲域名不匹配(例如 pinterest**.com** 和 pinterest**.abc**),Pinterest ccTLDs 沒法與 accounts.pinterest.com 通訊。

爲了解決這個問題,咱們使用了跨域資源共享(CORS),它爲 web 服務器提供跨域訪問控制,以支持數據跨域傳輸安全。這是經過在數據傳輸中向 HTTP 請求和響應添加 CORS 特定的(響應)頭來完成的,並相應地處理它們。

在握手中使用 CORS

咱們經過使用 auth 握手在 www.pinterest.de 上註冊 Pinterest 的簡化示例來完成這個過程。首先,客戶端指定它要使用用戶的憑據向 accounts.pinterest.com 提出跨域請求。此時瀏覽器會自動向請求中添加一個 Origin header,並指定當前域名。

當請求到達服務器時,咱們建立訪問令牌,並在 accounts.pinterest.com 上進行用戶身份驗證。一旦用戶登陸,握手就會在響應中向客戶端發回一個自定義令牌。此令牌可交換爲 www.pinterest.de 可用於身份驗證的訪問令牌。

服務器跟蹤全部 ccTLDs 用於身份驗證的白名單。在返回響應以前,咱們要檢查 Origin request 報頭值是否已經存在於白名單中。若是是這樣,服務器將添加特殊的 CORS 響應報頭。這些報頭中最重要的是 Access-Control-Allow-Origin,該報頭的存在將向客戶端發出是否容許跨域傳輸的詢問信息。

當客戶端接受到響應時,它會看到 Access-Control-Allow-Origin 的報頭值「https://www.pinterest.de」。由於這和客戶端同源,因此會繼續處理響應。自定義令牌被檢索並用於獲取訪問令牌,容許用戶登陸 www.pinterest.de.

您能夠在 Mozilla 官方文檔中閱讀到更多關於跨域資源共享和這些請求所涉及的全部抱頭內容。

經過 SEO 提升可發現性

一旦咱們創建了新的本地域名,下一步就是幫助它們更容易被發現。引導通訊量的最簡單方法之一是實現對新域名的重定向。在適合狀況下,咱們使用永久性 (301) 重定向,從舊的現有國家子域名重定向到新的相關 ccTLDs (例如 de.pinterest.com → www.pinterest.de).。使用永久性重定向容許咱們將舊域名上的大部分網頁排名和權限轉移到新的域名中。

咱們還使用了一些間接方法來提升新的 ccTLDs 流量質量。Hreflangs 是能夠包含在網頁標記中的屬性,用於告訴爬蟲關於其不一樣語言版本的信息。當搜索引擎看到這個標記時,他們會根據搜索者的區域設置顯示與本地相關的頁面。咱們還使用名爲 sitemaps 的文件來幫助提升搜索引擎爬行站點的效率和速度。Sitemaps 是用來列出您網站的網頁並告訴搜索引擎您的內容組織結構的文件。經過將這些文件直接提供給搜索機器人,它們能夠更容易地找到新的內容來進行爬取和排序。

結論

到目前爲止,咱們已經觀察到在咱們推出的國家,流量有了積極的增加,點擊率和瀏覽量也有所增長。在這個過程當中,一個更有趣的發現是咱們能夠索引更多的頁面,由於不一樣的頂級域名爲搜索機器人打開了一個單獨的「爬行預算」。

展望將來,咱們將繼續在 ccTLDs 中爲咱們的國際內容投資,並正研究進一步加強 accounts.pinterest.com 做爲全部 Pinterest 屬性中心的認證中心。


鳴謝: Devin Lundberg, Josh Enders, Sam Meder, Jess Males, Evan Jones, Jeff Avery, Grey Skold, Julie Trier, Vadim Antonov, Kynan Lalone, Evelyn Obamos 和 International 團隊


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索