(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)

(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)

*直接讀取AMP快取的語法:

https://example-com.<cache.updateCacheApiDomainSuffix>/c/s/example.com/article

*以本站「Life認真過生活」為例,套用之後的語法:

https://life-jasonjc-com.cdn.ampproject.org/c/s/life.jasonjc.com/category/attractions/fireworks

在瀏覽器中輸入之後,就會被重導到原始的網址去,像是這樣:

https://life.jasonjc.com/category/attractions/fireworks

如果出現的網頁內容是舊的,那麼在15秒之後,以新的分頁、或視窗、或其它瀏覽器,再去存取它時就會得到更新的內容,這就是所謂「stale-while-revalidate(過時驗證)」的運作方式。

15秒是Google內定的網站檢查時間,設的太短會讓原始網站loading太重,設得間隔太長資料就不即時了,15秒是Google衡量權重之後的內定,我們並沒有辦法改變它。至於以新的分頁、視窗、其它瀏覽器再去存取,表示你已經是第2位使用者,所以會得到最新的資訊。

很幸運的是大部分的網頁,都會被正確的重導而得到更新,但就是有一些網頁完全沒有反應,就連網址都保留著原來的「life-jasonjc-com.cdn.ampproject.org」格式,就像是這個「fireworks」的網址完全不動如山,當然網頁的內容也是舊版的。

(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)

迫於無奈,還是得來和RSA公私金鑰打交道。

AMP Cache Update快取更新(藉由RSA公私金鑰)

如同上一節提到的,它的更新請求語法如下:

https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&amp_ts=<ts_val>&amp_url_signature=<sig_val>

面臨的第一個挑戰是得產生amp_url_signature=<sig_val>中,<sig_val>這參數,而在得到它之前,首先得產生RSA公私金鑰,這在官網中有詳細的步驟說明。

(官網)Generate the RSA key

(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)

只是用習慣Windows的我們,到哪裡去生出Linux/Unix系統,,更別說是OpenSSL library了,但好佳在的是,現在線上就有許多免費Linux模擬器,只要在Google裡打入linux emulator就有一堆可供選擇。

按照AMP官網裡,產生RSA公私金鑰的詳細步驟,在linux emulator裡copy/paste相關命令,很快就能夠得到public-key.pem、private-key.pem、signature.bin這3個檔案,然後再藉由base64encode.org所提供的工具,就能夠把binary RSA signature編譯成base64-encoded RSA signature。

(官網)BASE64 Decode and Encode工具

(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)

只是別忘了勾選下方的「Perform URL safe encoding (uses Base64URL format).」選項。

就這樣amp_url_signature=<sig_val>後方的參數<sig_val>就可以得到了,它長得像是這樣子:

BcLD2ykdxhjhkiEccEg4IjcJBIthZiprtjYGElUD2O8P9xr0IzB3K4UdydL3w5Gkmr3DLJIMkjuTfuBELmxiYMiOJPRPU7Brtqb0SZ4944GFKRH3EemaQBEwhyXzJP5pZDCUt6pFCp28OaHdS7zeZfkE0tF_YpaOZF5y1eOj-6quYrPL1cbxxE_9X_O8jD8kJFzDFCB_Cpy9FhpyhL0lHkPdVDd3qxT00JoUcRa2196sARl6YZULIbIsiG2Jj58pq2TJzpQ2kEy_vkJR7TP-YJUzcSh1q5HXAptCqu-pps9F3Q0tqCqjzSS4kfZOmg5G-Ex5KOcCA9uWpraICqJAfw

接著把公鑰public-key.pem改名為apikey.pub,並且儲存在下列的位置:

https://example.com/.well-known/amphtml/apikey.pub

以本站「Life認真過生活」為例,網址會像是這樣:

https://life.jasonjc.com/.well-known/amphtml/apikey.pub

然後送出更新AMP快取的請求,理論上應該就能夠成功了。

https://life-jasonjc-com.cdn.ampproject.org/update-cache/c/s/life.jasonjc.com/category/attractions/fireworks?amp_action=flush&amp_ts=1591444846&amp_url_signature=BcLD2ykdxhjhkiEccEg4IjcJBIthZiprtjYGElUD2O8P9xr0IzB3K4UdydL3w5Gkmr3DLJIMkjuTfuBELmxiYMiOJPRPU7Brtqb0SZ4944GFKRH3EemaQBEwhyXzJP5pZDCUt6pFCp28OaHdS7zeZfkE0tF_YpaOZF5y1eOj-6quYrPL1cbxxE_9X_O8jD8kJFzDFCB_Cpy9FhpyhL0lHkPdVDd3qxT00JoUcRa2196sARl6YZULIbIsiG2Jj58pq2TJzpQ2kEy_vkJR7TP-YJUzcSh1q5HXAptCqu-pps9F3Q0tqCqjzSS4kfZOmg5G-Ex5KOcCA9uWpraICqJAfw

但事與願違,網頁出現了403的錯誤。

(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)

原因是找不到公鑰apikey.pub:Invalid public key due to ingestion error: 500 error from origin,所以在瀏覽器裡打入下列網址,試著直接讀取公鑰:

https://life.jasonjc.com/.well-known/amphtml/apikey.pub

結果得到的是403 Forbidden error,也就是讀取權限不足的錯誤,並且網址被改成:https://life.jasonjc.com/.well-known/

(軟體)Google AMP是什麼?繞了2圈經驗談(裝還是不裝?)
分享你的喜愛

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *