的外れな質問をしているかもしれませんが、よろしくお願いいたします。
どんだけ調べても解決できません。詳しいかたの知識をお借りできればと思います。
やりたいこと:AMPコンテンツのキャッシュ更新
目的:AMPページをカスタマイズした後すぐにスマホで確認したい
これまでやったこと
RAS鍵の生成
AMPコンテンツを更新するに書いてあるやり方を、こちらのサイトAMPのCDNキャッシュをupdate-cacheを使って強制更新する方法。update-pingは廃止。を参考にRSAキーの準備とアクセスまでは成功しております。
リクエストURLの作成
上記サイトで、リクエストURLを作成する方法が記載されてあります。
https://<example-com>.cdn.ampproject.org/update-cache/c/s/<example.com/article>?amp_action=flush&_ts=<ts_val>&_url_signature=<sig_val>
この中にあるパラメータを以下の内容で挿入するよう指示があります。
パラメータ
・<example-com>: ドメインをAMP Cache URL Formatでエンコードしたもの。単純には、”-“を”–“に、”.”を”-“に置き換えたものです。
・<example.com/article>: キャッシュを更新したいURL
・<ts_val>: unix time。リクエストを送る時間のプラマイ1分以内でないといけません。
・<sig_val>: RSA暗号鍵で作成したキー。
出来上がったものの「/update-cacheから<ts_val>までの部分をsha256で暗号化」し「web safeなbase64でエンコード」と指示があります。
SHA256ハッシュ生成ツール
上記サイトで暗号化しましたものをBASE64 エンコード・デコードこのサイトでUTF-8でエンコードしました。
わからないこと
ここからが私にとっては難解でして、分からないことを箇条書きしますと
- 上記の方法でエンコードしたURLにアクセスするとキャッシュが更新されるという理解でよろしいでしょうか?
参考サイトでは「phpで実装を行うと次のようになります。」とあります。
- この記述を保存する際のファイル名は何にすればいいのか?どこに保存し実行すれないいのか?
function generateURL( $page ) { $domain = ‘example.com’; $url = $domain . $page; $timestamp = time(); $ampBaseUrl = “https://” . str_replace( array( ‘-‘, ‘.’ ), array(‘–‘, ‘-‘ ), $domain ) . “.cdn.ampproject.org”; $signatureUrl = ‘/update-cache/c/s/’ . $url . ‘?amp_action=flush&_ts=’ . $timestamp; // opening the private key $pkeyid = openssl_pkey_get_private( “file:///Users/boofoo/private-key.pem” ); if ( $pkeyid == false ) { echo ‘could not open the private key.’; exit; } // generating the signature openssl_sign( $signatureUrl, $signature, $pkeyid, OPENSSL_ALGO_SHA256 ); openssl_free_key( $pkeyid ); // urlsafe base64 encoding $signature = $this->urlsafe_b64encode( $signature ); // final url for updating $ampUrl = $ampBaseUrl . $signatureUrl . “&_url_signature=” . $signature; return $ampUrl; } function urlsafe_b64encode( $string ) { return str_replace( array( ‘+’, ‘/’, ‘=’ ), array( ‘-‘, ‘_’, ” ), base64_encode( $string ) ); }
上記コードに関して以下のような指示が続いています。
「generateURL関数にページのパス ( /example_page.htmlなど) を渡すと、リクエストURLが返ります。」
- これは上記コードの内のどこかにページパスを入力するのでしょうか?それとも別途PHPを作成するのでしょうか?作業手順が全く分かりません。
「関数内の$domainは先に指定しておきます。」
- ここは、サイトドメイン(***.comのような)と理解して間違いないでしょうか?
「$domainには他バイト文字は入っていないと仮定しています。」
- 他のバイトとは文字のことでしょうか?例えば「-」などのことでしょうか?
「あとは生成したURLに対して @file_get_contents( $url ); をすれば良いでしょう。」
- この作業もどこでどのように実行するのかが分からず。
大変初歩的な質問ばかりで恐縮ではありますが、この作業を完成させたいと思っております。
何卒ご教授よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/13 12:17
2020/02/13 14:56 編集
2020/02/14 08:02
2020/02/14 08:17