簡単な方法でWebサイトを高速化を試してみよう


システム担当のGucciです

StudioAKでは基本的にWebサイトやWebシステム開発をする時はLAMPで開発しています。

要件やプランに合わせて自社CMSやオープンソースなどを使って開発しているのですが、必ずオープン前にいくつかのサイトで表示速度やモバイルフレンドリーなどを計測して一定値以上の数値になってから公開しています。

満点っていうのはプランによってGoogleMapをAPIではなくiframeのまま活用していたり、Wordpress を使ったりする場合があるのでマスト条件にはなっていませんが、社内で決められた数値以下の場合は対策を施すようにしています。

その中で一番の問題になってくるのはサイトの表示速度かと思います。

ただHTML+CSSで書いた場合は画像さえ小さくすればそれほど極端な結果にならないのですが、最近はCMSなどでDBから情報を読み込んできたり、Wordpress などオープンソース型のCMSの一部で異常に重いものがあり、そのまま使うとGoogleの得点が50点以下最悪は10点未満という悲惨な結果になるサイトもよく見受けられます。

表示速度が遅いとそれだけで離脱率が上がり、アクセス数はもとよりコンバージョン率なども下がってしまう原因になります。

そこでStudioAKでは簡単にできるWebサイトの高速化として、.htaccessに下記のようなスクリプトを書いて速度アップをすることがあります。

あくまでもこれは一例のサンプルで実際はもう少し詳細に書いてありますが、まずは簡単にできるものを紹介します。

データをできるだけ圧縮して表示すること、そしてキャッシュを活用することでDBへの負荷を減らすことにより表示速度の高速化を狙っています。

 

# mod_deflateを利用して Gzip圧縮する設定
<IfModule mod_deflate.c>
  SetOutputFilter DEFLATE

  # Mozilla4系、IE7、8の古いブラウザでは無効にする
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html

  # GIF、JPEG、PNG、ICOなど圧縮済みの画像は再圧縮しない
  SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
  # プロクシサーバが間違ったコンテンツを配布しないようにする
  Header append Vary Accept-Encoding env=!dont-vary

  # 各コンテンツを圧縮する設定を記述
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/js
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/atom_xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/x-httpd-php
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-font-woff
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
</IfModule>

# ブラウザへのキャッシュの設定
<IfModule mod_expires.c>
  ExpiresActive On

  # キャッシュの初期化(1秒に設定)
  ExpiresDefault "access plus 1 seconds"

  # MIME Type ごとのキャッシュ設定
  ExpiresByType text/css "access plus 1 weeks"
  ExpiresByType text/js "access plus 1 weeks"
  ExpiresByType text/javascript "access plus 1 weeks"
  ExpiresByType image/gif "access plus 1 weeks"
  ExpiresByType image/jpeg "access plus 1 weeks"
  ExpiresByType image/png "access plus 1 weeks"
  ExpiresByType image/svg+xml "access plus 1 year"
  ExpiresByType application/pdf "access plus 1 weeks"
  ExpiresByType application/javascript "access plus 1 weeks"
  ExpiresByType application/x-javascript "access plus 1 weeks"
  ExpiresByType application/x-shockwave-flash "access plus 1 weeks"
  ExpiresByType application/x-font-ttf "access plus 1 year"
  ExpiresByType application/x-font-woff "access plus 1 year"
  ExpiresByType application/x-font-opentype "access plus 1 year"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
</IfModule>

 

上記でも書きましたが、自社のCMSにはこれ以外にも表示を軽くする機能を独自開発し、実装していますが、Wordpress などで高速化するPluginはたくさんあるのですが、Pluginを入れる前段階としてこういうものを.htaccessに記述することで効果アップを狙います。

参考になれば幸いです。