現在このブログでは携帯サイトをMT4iにて作成しています。
しかしサーバー負荷的に考えると少々苦しくなってきたので別の方法を模索する事に。
というか、普通にMovableTypeのテンプレートを使って静的URLで運営しようと思った。
文字コード変換プラグインMT-I18Nを見つけたので、移行に踏み切った。
近日中に携帯用URL変更の予定。
サーバー負荷に関して
- MT4iは動的にURLを生成。
・アクセスがある度にデータベースへ問い合わせが発生
・逐次ページを動的URLで生成
なのでCPU負荷が高い。 - キャッシュ生成機能があり、利用するとそれなりに表示は高速&負荷も減る。
しかしアクセスが集中するとチョット、、、いや、かなり辛くなって来た。
MT4i | 1000アクセスでCPU使用時間20分くらい。 |
PHP静的ページ | 10000アクセスでCPU使用時間15分くらい。 |
HTML静的ページ | 今アクセスが殆ど無いので計測不能。わかんない |
一日のアクセスがPC用Webページに3万アクセス、携帯用cgiページに1500アクセスくらいまでなら、さくらのスタンダードでも普通に運営できる。
が、PCサイトに1日4万アクセス、携帯用cgiページに2500アクセス位になると、どうにも苦しくなるっぽい(503エラーの頻度がこの辺でドンと上がる)
携帯用ページをBotがクローリングを始めたり、PC用ページを企業プロクシが連続取得したりすると簡単に限界突破する。
自分に対する注意事項
携帯サイトへアクセスする端末は、どれも通信速度が遅い。
静的なページに切り替えても通信帯域を占有する割合は減らない可能性大。
ここもネックになっていた場合は、静的ページに移行しても大きな効果は無いかもしれない。
MTで携帯用ページを静的に生成するには
- PC用ページをUTF-8で、携帯用ページをShift-JISで表記したい。
- 全角カタカナを半角に変換したい
- 画像を小さくしたい、またはリンク表記のみにしたい
- 1記事を複数に分割したい
等々が問題として挙がる。
以下、それらを少しだけ詳しく。
PC用ページをUTF-8で、携帯用ページをShift-JISで表記したい。
MTプラグインMT-I18Nで解決する。
MovableTypeでUTF-8やEUCをS-JISに変換するもの。
テンプレートを丸々
<MTEncodeText from="utf-8" to="SHIFT-JIS">
~~~普通にテンプレート記入~~~
</MTEncodeText>
で囲えば良い。headもbodyも、まるまる全部囲んじゃう。
全角カタカナを半角に変換したい
MTプラグインzenkanaで解決する。
<$MTEntryBody regex="1" zenkana="1" $>
<$MTEntryMore regex="1" zenkana="1" $>
<MTEntryPreviousInCategory>
<a href="<$MTBlogURL$>m/<$MTEntryID$>.html" title="<$MTEntryTitle zenkana="1" $>" >古い記事</a>
</MTEntryPreviousInCategory>
<MTEntryNextInCategory>
<a href="<$MTBlogURL$>m/<$MTEntryID$>.html" title="<$MTEntryTitle zenkana="1" $>" >新しい記事</a>
</MTEntryNextInCategory>
こんな感じで、全角(日本語)が入りそうな変数には全てzenkana="1"を入れていく。
画像を小さくしたい、またはリンク表記のみにしたい
今回は、サーバー負荷を減らす事が目的になっているので、画像縮小は考えない。
プラグインMT Regex Pluginを用いて
<MTRegexDefine>s|<img[^<]+src=["']([^<"']+)["'][^<]+>|[<ahref="$1">画像</a> ]|igc</MTRegexDefine>
として画像を全てリンク表記に。画像にリンクを貼っている場合は構文エラー(リンクが二重になる)になるが、実害は殆ど発生しないので気にしない。
画像縮小を考えたい場合は、
携帯サイト向け画像サイズ変換スクリプト
Movabletypeで携帯サイト作成-「画像変換スクリプト設定編」-
あたりが参考になる。
1記事を複数に分割したい
今の所未解決。
Movable Typeプラグイン:一つの記事を任意の箇所で複数ページに分割できるプラグイン「SplitPage」
MT、MTOS 4.2以上で作動。
本文中に[[SplitPage]]と入れるだけでページの分割が可能。
しかし、既に存在する1500記事にこれを入れていくのはチョット。。。
無理です><
リストを分割させるプラグインは沢山あるけれど、1記事を自動的に分割させるプラグインは見つからないっぽい。本文と続きで分ける程度しか出来ないか・・・?
静的URLで携帯ページ作ってもAdsenseコード貼れないんじゃない?
PHPが作動するページにしておけば大丈夫。
モバイル用アドセンスにはPHP用コードがある。
(作動検証は一番最後にしているので、当方では未確認)
その他の困った部分、未解決な部分
- 一部文字が文字化けする。私のよく使う文字では「~」が文字化けする。
- 解決方法
色々考えたが、先にHTMLエンティティをしてしまう事にした。
Speeeeedなどのフリーソフトを使い、アップ前に変換しちゃう。
既にアップしたものはMovableTypeの置換機能を使う。
- 解決方法
- Shift-JISで表記したページからコメントを送ると、MovableTypeがエラーを吐く
- 解決方法
コメント投稿ページだけUTF-8にする。
現状、auの一部機種がまだUTF-8に未対応。でもこのサイト利用者には殆ど影響がないはず。。。
- 解決方法
- 圧縮転送に対応していない
- 解決方法:なし。
現状、日本の携帯電話はWebページの圧縮転送にほぼ対応していない。
これに対応してくれればパケット代は1/3程度になる筈だし、通信速度を考えるとサーバーの負担がかなり減るはずなのに。。。
- 解決方法:なし。