Webサイト高速化のために行った6つのこと(1)
2017/02/13 23:45
  • Webページの読み込みが遅いと、それだけでユーザー体験が低下し離脱につながってしまいます。
    当サイトはまだ本格運用を始めたばかりなのでそもそもユーザー数少ないのでサイトのパフォーマンスが
    低かろうが影響もあまりないのですが(笑)

    まぁ、ページの描画は早いほうがいいだろうということで色々試してみました。

    1.圧縮を有効にする(html, css, jsなどの静的コンテンツ)(当記事)
    2.ブラウザのキャッシュを有効にする(静的コンテンツにキャッシュを導入する)
    3.CSSを縮小する
    4.HTMLを縮小する
    5.スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する(※一部)
    6.読み込み中のときにloading indicatorを表示する(これはユーザー体験を高めるためのおまけ)

    PageSpeed Insightsで現状を把握する

    まずは、PageSpeed Insightsでいま置かれている状況を
    把握するところから始めます。

    PageSpeed Insightsトップ

    調査したいWebサイトのURLを入力し、「分析」をクリックします。
    しばらくすると、そのサイトの調査結果が100点満点で表示されます。

    当サイト、恐ろしく低いスコアが叩き出されました。驚愕です。笑

    分析結果(mobile)

    分析結果(PC)

    このPageSpeed Insightsでは、どうすればユーザー体験が高まるかを提案してくれるところが素晴らしいです。

    「修正が必要」、「修正を考慮」という項目を潰していけば必然的にパフォーマンスが向上します。(スコアも伸びます)

    実際に実践したこと

    上記の分析結果を考慮し、当サイトはでは以下を実践してみました。

    1.圧縮を有効にする(html, css, jsなどの静的コンテンツ)
    2.ブラウザのキャッシュを有効にする(静的コンテンツにキャッシュを導入する)
    3.CSSを縮小する
    4.HTMLを縮小する
    5.スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する(※一部)
    6.読み込み中のときにloading indicatorを表示する(これはユーザー体験を高めるためのおまけ)
    

    5.については、ベースとなるjQueryだけは今回うまく解消できませんでした。
    1.から順に見ていきたいと思います。

    1.圧縮を有効にする


    これはサーバーの設定で有効にします。
    ぼくはApache2.2系を使っているので、mod_deflateを使って圧縮を有効にしました。

    Apache Module mod_deflate

    上記サイト記載の通り、以下のように設定します。

    <VirtualHost *:80>
        ... 
        <IfModule mod_deflate.c>
            <Location />
                # Insert filter
                SetOutputFilter DEFLATE
    
                # Netscape 4.x has some problems...
                BrowserMatch ^Mozilla/4 gzip-only-text/html
    
                # Netscape 4.06-4.08 have some more problems
                BrowserMatch ^Mozilla/4\.0[678] no-gzip
    
                # MSIE masquerades as Netscape, but it is fine
                BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    
                # Don't compress images
                SetEnvIfNoCase Request_URI \
                \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    
                # Make sure proxies don't deliver the wrong content
                Header append Vary User-Agent env=!dont-vary
            </Location>
        </IfModule>
        ...
    </VirtualHost>
    

    ※ベースとなるhttpd.confのほうで、mod_deflate.cがロードされていることが前提です。
    ※httpd.conf内に記載すれば、全ホストに対して設定が有効になりますが、ここでは
    各バーチャルホストで固有に設定したかったので、以下に記載しました。

    これで、画像以外のすべての静的コンテンツに対して圧縮したデータを返すようになります。

    次回は「2.ブラウザのキャッシュを有効にする(静的コンテンツにキャッシュを導入する)」を紹介したいと思います。


    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2017/02/12 14:48>
  • サーバー
  • websiteウェブサイト高速化mod_deflateapachegooglepagespeedinsights静的コンテンツ圧縮CSSHTMLJSloadingindicator
  • 新しい記事へ
    Webサイト高速化のために行った6つのこと(2)

    古い記事へ
    Djangoのお問い合わせフォームをいい感じにカスタマイズする

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。