WEBページにおいてパフォーマンスの表示速度を上げることはとても重要です。
Googleの調査したデータによると、ページの表示が3秒以上掛かったサイトに対して待たずに離脱してしまうユーザーの割合は53%以上とのこと。
この記事ではそんな重要な要素であるページ表示速度について、改善するためのいくつかの方法ををご紹介したいと思います。
これらに当てはまる方におすすめの記事となっています。これを読めばあなたのサイトの離脱率を下げる方法が分かりますよ。
パフォーマンスを最適化する時、クエリの最適化が頭に浮かぶものです。
なぜかというと、本当に動いているウェブには、データベース量がかなり大きくて、数百MBからGBまでにかかっているからです。
つまり、クエリ文は数十万のレコードがあるテーブルで抽出を実施しています。DBの抽出を実現する時、以下の方法がいくつか適用しています。
まず、「Indexとは?」を説明したいと思います。 Indexとはデーター型の1つ種類であり、データ表にある一定のフィールドの値を含め、該当する行目(ロー)を指します。
では、Indexを貼ってからページ表示速度がどのように改善されるのでしょうか?
例:SELECT * FROM users where name = ‘Lempi Veum’;
56.000レコードがある「users」テーブルで「name」にIndexを貼らない場合とIndexを貼っている場合で抽出して、比較しましょう。
Indexを貼っている場合の速度はあきらかに早いですね。
そしてページ表示の速度を考慮する時、DB内のフィールドでIndexを貼るべきです(できれば、DBを構築する段階から)。またIndexを貼る時は、以下の段階に優先順位をつけて対応してください。
「The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. If an identical statement is received later, the server retrieves the results from the query cache rather than parsing and executing the statement again. The query cache is shared among sessions, so a result set generated by one client can be sent in response to the same query issued by another client.」
上記の文章がMySqlのホームページで「query cache」を定義しているものです。
複数のユーザーが同じいページにアクセスする時、抽出結果が既にcacheに保持されておきました。
そのため、他のユーザーはそのページにアクセスすると、cacheからクエリした結果を出してページの表示速度が速くなっていきます。
詳細な方法はこちらでご参考ください。
しかし MySql 5.7.20バージョンからは、query cacheが使えなくなります。 MySql 8.0バージョンから完全に除外されることになります。
その他の方法はLaravel等のフレームワークを使ってください。 cache queryを保存する為に、既にサポートしているので、とても便利です。
123 | $posts = Cache::remember(‘index.posts’, 30, function() {return Post::with(‘comments’, ‘tags’, ‘author’, ‘seo’)->whereHidden(0)->get();}); |
DB内の抽出を最適化にしても、ページ表示速度があまり改善されない場合、どうすれば良いでしょうか。
今の課題で対応した方法(ロジック)を変更する方向で検討してみてください。
例えば、あるシステムの集計機能を実装しています。日間や年間をかけて膨大なデーター量で抽出しないといけません。
その時、リアルタイムにてデーター集計は大変ですよね。
一方、Cronjなら毎日・毎年等の集計が何かの作業で定期に実行され、結果を保存することができるのです。
これで、実行に時間がかかる作業は裏で実施されると思います。つまり、ユーザーが短時間で集計の結果を見ることができるということです。
このように、時間がかかるのにリアルタイムで不要になる作業は裏(underground)で実施した方が良いと思います。
cronjobを導入する前にDBのCPUの消耗
cronjobを導入した後DBのCPUの消耗
現在、ウェブサイトのほとんどがフレームワーク(Laravel, WordPress, CakePhp, …)で開発されています。
フレームワークなら既に最適化されているので、このメリットを活躍すれば工数が非常に削減できると思います。
Laravelで利用する場合、以下のいくつかポイントをオススメします。
Laravel の既存コマンドを使ってキャッシュをコンフィグする:
php artisan config:cache
php artisan route:cache
php artisan view:cache
LaravelはDBを対応する時、素晴らしいORMを提供しています。
EloquentのようにDBの各テーブルからabstracts modelを作られます。
Eloquentはeager loadingを利用する時、連携されているobject modelを全て抽出し、最初のクエリにレスポンスする為です。これはアプリケーションのレスポンスを追加されます。
Lazy loadingは次のようにクエリします。
1234 | $books = App\Book::all();foreach ($books as $book) {echo $book->author->name;} |
同様に、 eager loadingは次のようにクエリします。
1234 | $books = App\Book::with(‘author’)->get();foreach ($books as $book) {echo $book->author->name;} |
Laravelではパフォマンスを最適化する時、RAMの中にCacheとsessionを保存するのが一番良い方法です。
その他に、「Redis」 や「MemcachedCache」を利用すると、sessionの抽出する速度も改善できます。
Laravelでは、Laravel Mixを提供して、複数のcss/jsを同一のcss/jsにコンパイルするツールです。
そして、css/jsファイルを読み込む時、時間を短縮することができます。
いかがでしょうか。WEBのページ表示速度を改善する方法について紹介していきました。
勿論、本日紹介紹介した方法以外にもパフォーマンスを最適化する方法が様々あります。
実用に応じて、相応しい方法を簡単に探して利用していくようにしましょう。
パフォーマンスの最適化は大切な作業でウェブサイト開発から稼働にかけてずっと対応し続ける必要があります。今回紹介した方法を参考にぜひWEBのページ表示速度を改善してみてはいかがでしょうか。
dehaでは、5年ほど前から、ベトナムオフショア開発を行っています。
ベトナムでオフショア開発を行う際の費用や、エンジニアの質を知りたい方は、無料で見積もりいたしますので、お気軽にお問い合わせください。
参考サイト
オフショア開発は、コスト削減や専門的なスキルの活用を目的として、多くの企業が採用している手法です。 しかし、オフショア開発にはセキュリティに関する特有の課題が伴います。 この記事では、オフショア開発におけるセキュリティ課題を明確にし、それに対する効果的な対策を検討します。 オフショア開発に興味がある方 オフショア開発のセキュリティ対策について知りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発を行う際に気をつけるべきセキュリティ問題とその対策方法が丸わかりですよ。 (more…)
2025年、データセンター市場とクラウド市場はさらなる進化を遂げています。デジタル化の加速や生成AIなどの新技術の普及により、データ処理能力の需要が急増。 これに伴い、世界および日本国内での市場規模とプレイヤーの動きが注目されています。 この記事では、最新の市場データとトレンドをもとに、データセンターおよびクラウド市場の現状と今後の展望を詳しく解説します。 データセンターおよびクラウド市場の現状や展望が知りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば国内の2025年最新のデータセンター市場やクラウド市場の動向だけでなく、世界の動向まで丸わかりですよ。 (more…)
近年、業務のデジタル化が進む中、手書きや印刷された文書を効率的にデータ化する技術が注目を集めています。 その中でも、AI(人工知能)を活用したOCR(光学文字認識)技術であるAI-OCRは、従来のOCRを大きく進化させ、多様な業界で導入が進んでいます。 この記事では、AI-OCRとは何か、従来のOCR技術との違い、その種類や具体的な導入メリットについて詳しく解説します。 AI-OCRが気になっている方AIをビジネスに取り入れたい方社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばAI-OCRがどのように業務効率を向上させ、現代のビジネスにどのような価値をもたらすのかがわかりますよ。 (more…)
システム開発の外注は、効率的なソリューションを提供し、コストを節約するために非常に有益な方法です。 しかし、外注のプロジェクトは失敗する可能性もあり、それを防ぐためにはいくつかの重要なコツがあります。 そこでこの記事では、システム開発の外注プロジェクトを成功させるための5つの重要なコツを説明します。 システム開発の外注をしたい方 社内のIT人材が不足している方 オフショア開発を検討している方 これらに当てはまる方におすすめの記事となっています。これを読めばシステム開発を成功させるための方法が丸わかりですよ。 (more…)
コスト削減や、IT人材確保の面で注目されるオフショア開発。 実はアプリ開発にももってこいの開発手法なのです。 「人件費は下がったとしても、他の面で費用がかかったりしないか?トータルコストは本当に下がるのか?」 「コストを抑えた結果、質の悪いアプリを納品されないか?」 など不安を抱えている方向けに、この記事ではアプリをオフショア開発する際のポイントを紹介していきます。 オフショア開発に興味がある方 アプリ開発を行いたい方 社内のIT人材が不足している方 オフショア開発の予算が知りたい方 これらに当てはまる方におすすめの記事となってこれを読めば、オフショア開発初心者の人でも会社選びを失敗することなく、アプリ開発を行うポイントが丸わかりですよ。 (more…)
近年、企業のデジタルトランスフォーメーション(DX)が進む中で、手書き文書をデジタル化する技術であるOCR(Optical Character Recognition)が注目を集めています。 この記事では、そんなOCRの基本的な仕組みやその活用方法、さらに業務効率化のメリットについて解説します。 OCRに興味がある方 デジタルトランスフォーメーション(DX)を進めている方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばOCRがどのような技術なのかがわかるのはもちろん、具体的な活用方法まで丸わかりですよ。 (more…)