使用 update-cache
要求更新和移除 Google AMP 快取中的內容。
目前,update-cache
只會確保內容會在其 max-age 中更新,也就是系統會將資源視為最長的時間。
update-cache
要求網域擁有者必須使用 RSA 金鑰簽署要求,並透過原始網域的標準網址提供相符的公開金鑰。
您可以透過對 AMP 快取發出的已簽署要求來清除文件目前快取的所有版本。位於以下網址呼叫 update-cache
要求:
https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&_ts=<ts_val>&_url_signature=<sig_val>
參數
update-cache
要求需要下列參數和值:
參數 | |
---|---|
example-com 和 example.com
|
必要 依據 AMP 快取網址格式格式指定的網域名稱。 |
<cache.updateCacheApiDomainSuffix>
|
必要 AMP 快取的網域名稱。詳情請參閱呼叫update-cache 要求一文。 |
amp_ts=<ts_val>
|
必要 這個參數代表 UNIX 紀元時間戳記,可用來防止重播攻擊。這個值應為目前時間 (以秒為單位),且該時間必須在目前時間的前後。 |
amp_url_signature=<sig_val>
|
必要 這項參數代表整個要求路徑的 RSA 簽名 (請參閱產生 RSA 金鑰),包括amp_action 和 amp_ts ,但排除簽名本身。 |
指南規範
請務必遵守 update-cache
規範:
- AMP 快取主機名稱 (cdn.ampproject.org) 已從簽章中排除,以允許向多個 AMP Cache 運算子提交相同的已簽署要求。
- 針對簽章驗證,您必須在 AMP 文件網域的固定位置提供公開 RSA 金鑰 (如要產生金鑰,請參閱產生 RSA 金鑰)。例如:
https://example.com/.well-known/amphtml/apikey.pub
- 公開金鑰不得為「漫遊器」。
- 網址必須是 HTTPS。
- 網域必須是您要更新的確切網域,而不是子網域或上層網域。
- 您必須以 PEM 格式發布金鑰,並使用 content-type &quo/plain/quot; 提供金鑰。
- 無論文件是否透過任何 rel=canonical 標記指定網域,AMP 快取一律都會從要求的網域擷取公開金鑰。如果來源網域在要清除的位置提供 HTTP 重新導向,則只會從要求的路徑從快取中清除,而不是從重新導向的目標清除。
更新或移除內容
將內容從來源中移除後,您可以使用 update-cache
更新或永久從 Google AMP 快取中移除內容。如要更新或移除內容,請按照下列步驟操作:
- 擷取下列檔案:
https://cdn.ampproject.org/caches.json
- 疊代 JSON 檔案中的
caches
項目。 - 選取要支援的
caches
。 - 使用每個
cache
項目的updateCacheApiDomainSuffix
呼叫update-cache
要求。 - 使用以下格式建立網址:
https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&_ts=<ts_val>&_url_signature=<sig_val>
產生 RSA 金鑰
OpenSSL 專案提供指令列工具來產生及管理非對稱 RSA 金鑰。您也可以產生 RSA 金鑰,並透過 OpenSSL 程式庫或對等的加密 API (節點加密、NSS 或 GnuTLS) 以程式輔助的方式管理金鑰。
- 產生文字 PEM 格式的一對 RSA 金鑰,如下所示:
openssl genrsa 2048 > private-key.pem openssl rsa -in private-key.pem -pubout >public-key.pem
- 在網域中發布公開金鑰,以便在下列位置重新整理:
https://example.com/.well-known/amphtml/apikey.pub
網址必須是 HTTPS。該金鑰必須可供匿名使用者存取。
- 使用私密金鑰簽署
update-cache
要求。例如:echo -n > url.txt "/update-cache/c/s/example.com/article?amp_action=flush&_ts=$(date +%s)" && cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin
login.bin 的輸出結果為二進位 RSA 簽名。
- 使用公開金鑰來驗證簽名:
openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
- 使用 Base64 網路安全版本對二進位 RSA 簽名進行編碼:
cat signature.bin | base64 -w0 | tr '/+' '_-' | tr -d '=' > base64.txt
- 使用
amp_url_signature
查詢參數將採 Base64 編碼的 RSA 簽名附加至網址。echo "$(cat url.txt)&_url_signature=$(cat base64.txt)"
更新 RSA 金鑰
如要更新 RSA 金鑰,可以透過 AMP 快取連結存取 RSA 金鑰,Google 可能會在幾小時內檢索新的 RSA 金鑰。AMP 快取連結如下:
https://example-com.<cache.updateCacheApiDomainSuffix>/r/s/example.com/.well-known/amphtml/apikey.pub