Add functions PHPでご利用いただけるSEO対策・高速化機能について解説しています。
- jQuery Migrateを読み込まない
- JQueryの<script>タグにdeferを付与する
- JQueryの<script>タグにasyncを付与する
- WordPress純正jQueryをGoogle CDNに変更して<head>内部で読み込む
- WordPress純正jQueryをGoogle CDNに変更して</body>直前で読み込む
- imgにloading=”lazy”を追加して画像の読み込みを遅らせる(以下と併用は非推奨)
- lazysizes.jsでimg, video, iframeを遅延読み込み
- 【PRO版】Enable Keep-Alive を設定する
- 【PRO版】画像とフォントをキャッシュする
- 【PRO版】ブラウザのキャッシュを設定する
- 【PRO版】同じファイル名でも.webpを優先的に配信する
- 【PRO版】ETags(Configure entity tags) を無視する
- 【PRO版】HTML, CSS, JavaScript, Text, XMLを圧縮する
jQuery Migrateを読み込まない
jQuery Migrate は、jQuery のバージョンアップに伴う非推奨機能や変更点に対応するためのライブラリです。具体的には、jQuery の新しいバージョンにアップグレードする際に、古いコードが動作しなくなる問題を防ぐために使用したり、非推奨となったメソッドや機能を引き続き使用できるようにするためのものです。
jQuery Migrateを読み込まずに削除して問題ない場合としては、以下のようなパターンがあります。
JQueryの<script>タグにdeferを付与する
jQueryの<script>
タグにdefer
を付与するとページの初期読み込みが速くなり表示速度が向上しやすくなります。
ただし、defer
属性は、古いブラウザではサポートされていない場合があります。そのため、古いブラウザをサポートする必要がある場合は注意が必要です。また、初期表示に必要なスクリプトは、<head>
タグ内に配置するか、async
属性を使用することが推奨されます。
もしdefer
を付与して挙動がおかしくなった場合はasync
属性を使用するか、使用自体を断念することをおすすめします。
JQueryの<script>タグにasyncを付与する
defer
とasync
は、JavaScriptファイルの読み込みと実行のタイミングを制御するための属性です。これらを使うことで、ページの読み込み速度を改善することができますが、それぞれの動作には違いがあります。
defer属性
async属性
- 読み込み:
defer
と同じく、HTMLの解析と並行してJavaScriptファイルをバックグラウンドで読み込みます。 - 実行: JavaScriptファイルの読み込みが完了した時点で即座に実行されます。HTMLのパースは一時停止します。
- 順序: 複数の
async
スクリプトは、読み込みが完了した順に実行されます。HTMLに記述された順序は関係ありません。
async
属性を持つスクリプトは、読み込みが完了した順に実行されるため、スクリプト間の依存関係がある場合には注意が必要です。依存関係があるスクリプトにはdefer
属性を使用する方が適していることもあります。
また、async
スクリプトは、DOMの準備が整う前に実行されることがあるため、DOM操作を行うスクリプトには適していません。DOM操作を行うスクリプトにはdefer
属性を使用する方が安全です。
なお、サードパーティのスクリプトやページ全体に影響を与えるスクリプトにはasync
属性が適している場合がありますが、全てのスクリプトに適用できるわけではありません。
WordPress純正jQueryをGoogle CDNに変更して<head>内部で読み込む
CDNを使用することで、ユーザーに最も近いサーバーからjQueryが配信されるため、読み込み速度が向上します。また、GoogleのCDNは非常に信頼性が高く、ダウンタイムがほとんどありません。
<head>
で読み込む際の特徴としては、以下の通りです。
ただし、他のプラグインやテーマがWordPressの純正jQueryに依存している場合、GoogleのCDNから読み込むことで互換性の問題が発生する可能性があります。特に、バージョンの違いによる問題に注意が必要です。
この機能を実行して挙動がおかしくなった時は、テーマやプラグインの利用を停止したり、</body>
直前での読み込みに切り替えたり、機能自体を無効化したりしてください。
WordPress純正jQueryをGoogle CDNに変更して</body>直前で読み込む
</body>
直前で読み込む際の特徴としては、以下の通りです。
この機能を実行して挙動がおかしくなった時は、テーマやプラグインの利用を停止したり、<head>
での読み込みに切り替えたり、機能自体を無効化したりしてください。
imgにloading=”lazy”を追加して画像の読み込みを遅らせる(以下と併用は非推奨)
<img src="example.jpg" alt="Example Image" loading="lazy">
loading="lazy"
は、画像の読み込みを遅延させるためのHTML属性のことであり、これを使用すべきパターンとしては、追加のライブラリを導入せずに、簡単に遅延読み込みを実装したい場合や<img>
や<iframe>
タグの遅延読み込みだけで十分な場合、最新ブラウザのみの対応だけで問題無い場合などです。
loading="lazy"
を追加するメリットとしては以下のようなものがあります。
lazysizes.jsでimg, video, iframeを遅延読み込み
<img data-src="image.jpg" class="lazyload" alt="Sample Image">
<iframe data-src="https://www.youtube.com/embed/example" class="lazyload"></iframe>
lazysizes.js
は、画像(img)、ビデオ(video)、iframeの遅延読み込みを簡単に実装できるJavaScriptライブラリです。
lazysizes.js
はloading="lazy"
とは違い、
このような場合に利用をおすすめします。loading="lazy"
と併用すること自体は可能ですが、二重になってしまいパフォーマンス低下に繋がる可能性が高いためおすすめはしていません。
lazysizes.js
を使用するメリットとしては、以下のようなものがあります。
【PRO版】Enable Keep-Alive を設定する
Keep-Alive(キープアライブ)は、HTTP接続を持続させるための機能で、以下のようなコードを.htaccessに追加することで有効にできます。ほとんどのモダンなウェブサーバー(Apache、Nginxなど)はKeep-Aliveをサポートしていますが、有効化しても追加されない場合はサーバーの設定を確認してください。
<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>
通常、ブラウザがサーバーにリクエストを送信すると、サーバーはレスポンスを返してから接続を閉じます。Keep-Aliveを有効にしている時は、同じ接続を使って複数のリクエストとレスポンスをやり取り可能です。
このため、Keep-Aliveを有効にすると以下のようなメリットが発生します。
【PRO版】画像とフォントをキャッシュする
キャッシュとは、一度読み込んだデータを一時的に保存しておく仕組みです。キャッシュを保存しておくと次に同じデータを読み込む際に、もう一度サーバーからダウンロードする必要がなくなります。画像とフォントをキャッシュ保存を手動で実行するには、以下のようなコードを.htaccessに追加しましょう。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/eot "access plus 1 year"
</IfModule>
このため、Keep-Aliveを有効にすると以下のようなメリットが発生します。
【PRO版】ブラウザのキャッシュを設定する
ブラウザのキャッシュも先程の説明と同じように、ウェブページを表示するために必要なデータ(画像、CSS、JavaScriptなど)を一時的に保存しておく仕組みです。
ブラウザのキャッシュ保存を手動で実行するには、以下のようなコードを.htaccessに追加しましょう。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/eot "access plus 1 year"
</IfModule>
ブラウザのキャッシュを設定するメリットとしては、以下のようなものがあります。
【PRO版】同じファイル名でも.webpを優先的に配信する
WebP(ウェッピー)は、Googleが開発した画像フォーマットで、JPEGやPNGに比べてファイルサイズが小さく、同等かそれ以上の画質を提供するフォーマットです。このため、ページの読み込み速度が向上し、データ使用量が削減されます。
.webpを優先的に手動で配信するには、以下のようなコードを.htaccessに追加しましょう。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.+)\.(jpe?g|png)$
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule ^(.*)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>
.htaccessで.webpを優先的に配信するメリットとしては、以下のようなものがあります。
【PRO版】ETags(Configure entity tags) を無視する
ETags(エンティティタグ)は、ウェブサーバーがファイルのバージョンを識別するために使うタグ(識別子)のことです。
.webpを優先的に手動で配信するには、以下のようなコードを.htaccessに追加しましょう。
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
ブラウザがサーバーにリクエストを送信すると、サーバーはリソースのETagを返します。次回、同じリソースをリクエストする際に、ブラウザはこのETagをサーバーに送信し、サーバーはリソースが変更されていない場合にキャッシュされたバージョンを使用するよう指示します。
【PRO版】HTML, CSS, JavaScript, Text, XMLを圧縮する
HTML, CSS, JavaScript, Text, XMLを圧縮すると、データの転送が速くなり、ページの読み込み速度が向上します。
HTML, CSS, JavaScript, Text, XMLを圧縮するには、以下のようなコードを.htaccessに追加しましょう。
<IfModule mod_deflate.c>
# HTML, CSS, JavaScript, Text, XMLファイルを圧縮
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/plain
</IfModule>