概要
AMPに対応するページには基本的にはjavascriptを入れることができませんが、New Relicを利用していると、自動的にモニタリング用scriptがhtml内に埋め込まれてしまいます。
そのままだとAMPのvalidatorを通らないので、以下のような対応をしました。というメモです
対応
調べると公式ドキュメントに対応方法が書いてありました。
(NewRelicはよく使われているので、同じようなトラブルに遭遇した人が結構いたんですね…)
- Google AMP validator fails due to 3rd-party script | New Relic Documentation
- Disable Browser monitoring for specific pages | New Relic Documentation
NewRelicの使い方によって対応は違うようですが、要は特定ページでNewRelicを無効化する処理を入れろ、と。
今回はPHPを使ったプロダクトなので、下記関数を使うことで無効化できるようです
newrelic_disable_autorum()
PHP agent API | New Relic Documentation
何故かPhalconを使っているので、以下のように対応してみました
if (extension_loaded('newrelic')) {
$eventsManager->attach('dispatch', function ($event, $dispatcher) {
if ($dispatcher->getDI()->get('request')->get('amp') == 1) {
//ampのときはnewrelic無効化
newrelic_disable_autorum();
return;
}
$controller = $dispatcher->getControllerName();
$action = $dispatcher->getActionName();
newrelic_name_transaction($controller . '/' . $action);
});
}
所感
- NewRelicを開発環境に入れてないので、ステージングでようやく気付きました…
- AMP対応つらい