# WebP変換と配信の流れ
次のロジックでWebPへの自動変換とブラウザに応じた適切な配信を実現します。

.htaccess
によるWebP対応判定- 変換済みキャッシュの確認
- WebP変換
- キャッシュの保存
# WebPの対応判定
ブラウザからのリクエストヘッダAccept
を元にWebPの対応可否を判定します。
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteRule \.(jpe?g|png|gif) /phpwebp/image.php [L]
WebP非対応ブラウザの場合は、従来どおり元データを静的ファイルとして配信しますが、WebP対応ブラウザに対しては/phpwebp/image.php
でWebPへの変換処理を行います。
# キャッシュの確認
phpwebp/image.php
はまず、WebP変換後のキャッシュファイルを確認します。
- キャッシュファイルが存在するか。
- キャッシュファイルが存在する場合はその作成後に元の画像が変更されていないか。
以上の条件を満たす場合は、キャッシュの内容を配信して処理を終了します。
# WebPへの変換
キャッシュがまだ存在しないか、キャッシュ作成後に元のファイルが更新された場合は、WebPへの変換を実行します。
JPEGまたはPNGファイル
cwebpコマンドで変換GIFファイル
gif2webpコマンドで変換
変換した結果のWebPファイルをキャッシュに保存しつつ、ブラウザに配信します。
# WebP変換に失敗した場合
変換に失敗した場合や、WebPに変換することで元画像よりファイルサイズが大きくなってしまった場合はWebP変換を断念し、WebP対応ブラウザに対しても元画像を配信します。
- WebPはRGBカラースペースにのみ対応しているため、CMYKカラースペースの画像からは変換できません。
- アニメーションGIFからWebPへの変換において、ファイルによって逆にファイルサイズが大きくなるケースがあります。