質問: サーバーをレンタルして動的サイト、静的サイトでかかる負荷の違いを どれくらい意識した方が良いか、という点をお教え頂きたいです。 (私が現在考えているいる作成サイトでphpMyAdminに入っているデータを 出してきてサイトに表示させるWordプレスサイト、とします。) 現在当方が作成したいウェブサイト、ブログサイトが 一応動的サイトでも静的サイトでもどちらでも作成は可能であるが 出来たら動的サイトとして作成したい、としたとします。 ただ、仮にサイトが将来非常に大きくなったとした時に 静的サイトの方がサーバーに優しい、ダウンなども少ない、などとなると 静的サイトを積極的に作成したいわけではないが 静的なコンテンツが多いほうが無難であったとしたら 少し不満ではあるが、動的コンテンツの多いサイトはあきらめて ほぼ静的な要素が多いページを作成する、など これからのサイト作成にあたっての注意点などを知りたいと思っています。 例えばなのですが、Aサイト、Bサイトの2つのサイトがあったとします。 ■A phpMyAdminの30個のテーブルから7行づつ2カラム分のデータをSELECTしてきて1記事を表示するブログサイト。 ■B phpMyAdminの5個のテーブルから1カラム5行のデータをSELECTしてきて1記事を表示するブログサイト。 ・AとBでサーバーにかかる負荷は差はないと思って良いのなら、Aサイト方針でサイトを作成していきたいと思います。 ・Aは作成したいが、将来大量アクセスがサーバーにかかるほど成長して、サーバーダウンや、色々な心配を考えたら Aがサイト構成的にも望ましいには変わりないが、Bサイト案でサイト構築を進める方が得策かもしれなく、 ・しかし多くのレンタルサーバー会社では転送量などにともなったサーバーのプランがあったりして マシンのCPUやメモリ?が増えるとAサイト案でも割合大量アクセスに耐えることができる可能性もあるかもしれない ・そういった意味でサーバープランのCPUやメモリも大切であるのかどうか?具体的にはどの数値を主に見た方が良いかなどはあるのか。 ・上記A案のように、大量のテーブルから出してくるようなものは負荷がかかりすぎるが、少量なら良い、とか 具体的な指標はありますでしょうか。 ・いっそのこと動的ページは大量アクセス時はやばいので作成はあきらめたほうが絶対に良いと言われたら、計画もスムーズに立てやすいのですが、諦めるべきかどうかの判断基準を持ててない現在の自分、といった具合です...。 上記をまとめまして主に、ページ作成の動的静的コンテンツの割合に対するアドバイスや、レンタルサーバーでは転送量以外にもこういった数値(CPU)などは心配したほうがよい、 などのアドバイスが頂けたら有難いです。
回答: 「phpMyAdminに入っているデータを出してくる」=動的サイト 「ページ表示時にPHP等のサーバーサイド言語不要(HTML+CSS+Javascriptだけで出来ている)」=静的サイト として書きます。 まずは「静的サイトジェネレーター」で検索するといいかもしれません。 例えば静的サイトにしよう!と思った場合でも 「各記事ページのサイドメニューに新着記事一覧と人気記事一覧を表示したいな」という場合、 上記のようなジェネレーターや、それに類する何らかのツールや、「DBは使用しないPHP」などで一部分だけ動的にする等しないと、プログラム的な負荷は低くても運用的にやっていられないと思います。 (なぜなら手動でこのリストを作り、全ページに反映させないといけないことになるから) 動的サイトの場合。 ・AとBのどちらが負荷が掛かるかは、DB設計とSELECT文次第です。 普通に考えればAの方が負荷高そうだなーと思いますが、「インデックスや正規化がバッチリ効いててSELECT文がスマートなA」と「インデックス無し、重いSELECT文使いまくりのB」ならAの方が勝るかもしれません。 ・負荷が掛かった時に落ちるのはAもBも同じです。そして静的サイトでも同様です。 但し(負荷をA>Bとすると)Aなら同時アクセス1000で落ち、Bなら2000で落ち、静的ページなら3000で落ちる、みたいな違いは発生し得ます。(値は適当) ・サーバーの性能が高ければある程度高負荷でも耐えられる可能性はあります。 ただその分お値段が高くなりますし、通常時は無駄になります。 これは一般企業でも悩むところなので、「サーバー スケールアップ スケールアウト」とかで調べたり、各種サーバー会社を見比べてみてください。 ちなみにレンタルサーバーでも同様の機能(設定をオンにした期間は落ちにくくなる)がある所もあります。 ・「転送量」と「サーバー性能」は別です。 転送量は文字通り転送されるデータ量のことなので、たとえ静的サイトでも「巨大な画像たくさん」みたいな場合はガンガン消費していくでしょう。 サーバー性能はデータの処理速度、つまり前述のような「DBから目的のデータを引っ張って来て、それを適切な形に直す」みたいな処理の速さです。(ざっくり言えば) この辺は「サーバーとは」「パソコン(CPU・メモリ)とは」みたいな話になるので、適宜調べてください。 ・そもそもプログラムにおいて、扱うデータ量は少なければ少ない方がいいです。 そういう意味ではA案は宜しくない可能性が高いですが、「どうしてもそうする必要がある」ならば致し方ないので、出来るだけ負荷が減るような工夫を入れていく話になります。 逆に扱うデータが少量でも場合によっては負荷は上がります。 今はDBの話だけをしていますが、PHP側の処理負荷もありますので、「扱うテーブル数が少ないに越したことはないが、それだけが問題ではない」、何よりも**「要件と設計と実装次第」**が答えになるかと。 ・結論 静的サイトでいいのなら、そうするに越したことは無いです(通常時でも「低負荷=高速」なので)。 「静的サイトにできない(機能的に動的でなければ実現不可能、静的にすると運用負荷がヤバイ等)」場合、それを諦めるか、出来るだけ負荷の低い動的サイトにするかを決めるのは質問主さん次第になります。 あとは処理量、通常時どれぐらいの閲覧数が予想されるのか、「大量アクセス」がどれぐらいの頻度で発生すると予想されるのか、サーバーを落としたらヤバイ度合い、などによって適切なサーバーを決めてください。 (逆を言えば、それらが分からないと選定のしようがありません。個人やちょっとした会社のブログ程度なら「とりあえず好評そうな所を選んで、人気が出て来たらもっと強い所に引っ越せばいいや」という考え方もありでしょう)