「IE6対応は難しく、いら立たしい作業で、過度に時間を取られる。さらにIE6は最近のWeb標準をサポートしていないため、開発者ができることに制約がある」
ので、 IE6でWebサイトを閲覧した場合にアップデートを促す警告を出そう!というキャンペーンです。
実際IE6はバグが多すぎ、弊社サイトもリニューアルの際にIE6化させることができませんでした。そのでこのキャンペーンに参加しています。
しかし、このキャンペーン用のコードを貼付けると、せっかく無駄無くまとめているソースがごちゃごちゃしてしまいます。 これが非常に気になったので、弊社サイトでは
<!--[if lt IE 7]>
<script src="/js/ie6.js" type="text/javascript"></script>
<![endif]-->
だけ埋込み、コードの中身は
document.writeを用いてjava化して「ie6.js」という別ファイルにしています。 これですっきりします。
]]>
近年の画面サイズの大型化に合わせ、それまで720pxだったサイトの表示幅を拡大したのですが、960 Grid Systemというサイトを見つけ、参照しました。
自動でCSSを作ってくれるのですが、簡単に理解できないので、デモページのソースを参照して弊社サイトに反映しました。
かなりシステマティックに構成できます。
]]>弊社では本ブログと社内ブログ、プロジェクト管理システムで「Perl版ダイナミック・パブリッシング」を利用しています。理由は、各エントリーページを参照することは、ほとんどなくサーバーのディスクスペースが勿体ないので圧縮するためです。しかし多数の方がアクセスするオフィシャルホームページはすべて静的出力にしています。
その理由は、なるべく多くの方に見て頂きたいサイトであれば、少しでも訪問者のアクセスビリティを良くしたほうがよいからです。ダイナミック・パブリッシングでは表示が重たくなります。同時訪問者が多いほどその傾向は顕著となり、リソース制限が厳しいサーバーだとエラーの原因にもなります。
本サイトのように個人の備忘録的なサイトであれば特に気にする必要はないと思いますが、オフィシャルなページなら、エラーで表示されないなどあってはならないことです。
結論として、アクセスの高速化のためには静的出力。そのためにはWordPressでなくMovableTypeがよい、と言えます。
]]>「Perl版ダイナミック・パブリッシング」というものを利用します。詳細は下記のページとなります。
MovableTypeにはもともとphpを利用したダイナミック・パブリッシング機能がついているのですが、プラグインが使えなくなったりと、かなり致命的なデメリットがあり現実的ではありません。しかし、上記の方法であれば、プラグインをそのまま使え、設定も簡単です。
WordPressなどと比較したときのメリットとしては、静的ページと動的ページを混在できることが挙げられます。
良くアクセスのあるトップページとカテゴリーページは、サイトの負荷と表示速度を考慮して静的ページで構成し、記事が古くなればほとんどアクセスのないエントリーページはダイナミックパブリッシングにしてディスクスペースを圧縮する、そういった使い分けが可能です。
一方デメリットとしては、phpでなくperlを利用しているので表示速度が遅いといったことが挙げられます。実際はそれほど問題にならない程度と思います。
このブログのエントリーページは「Perl版ダイナミック・パブリッシング」を利用しているので、この記事もダイナミック・パブリッシングですがいかがでしたでしょうか。
]]>
・メインのindexページ・・・http://あたなのサイト/
・カテゴリーページ・・・http://あたなのサイト/カテゴリのディレクトリ/
・日付ページ・・・http://あたなのサイト/年/月/
・各エントリーページ・・・http://あたなのサイト/年/月/エントリー名.html
となっています。
しかし、これはSEO的には階層が深くすごく不利です。なぜエントリーが日付の中に格納されてしまうのか。これでは日記ツールです。
弊社では徹底的に簡素化したディレクトリ構成に変更しています。ディレクトリ構成を実際のサイトマップを意識して組み立てるとSEO的に有利です。具体的な変更点は以下です。
・メインのindexページ・・・もちろん変更なし
・カテゴリーページ・・・これも変更なしでOK
・日付ページ・・・不要なので削除
・各エントリーページ・・・http://あたなのサイト/カテゴリーのディレクトリ/日付+エントリー名.php
大きく変えたのは各エントリーページだけ。サイトを閲覧していても、それぞれの記事はカテゴリー別に分類され、日付別で分類されるわけでないので、こちらのほうが自然です。エントリーのファイル名ですが、デフォルトのみでもよいのですが、ソーティンングのために年月+エントリー名.phpとなるようにしています。例えば0909mt_2.phpといった具合です。やはりエントリー名が入っていた方がSEO効果は高くなります。
その他、各エントリーがカテゴリー内に保存されるメリットとしては、同じジャンルのエントリーが集まるとカテゴリーの評価も高まり、それらのカテゴリが集まったトップページも評価されます。
しかし、ある程度の規模のサイトでこれを実践すると各エントリーのアドレスが変わってしまうという致命的なデメリットがあります。そこで役立つのが.htaccessのリダイレクトをMTで半自動作成する方法で紹介した手法です。MTタグで日付を自動生成させるなど多少応用テクニックが必要ですが、これでリダイレクトさせればSEO的に問題ありません。弊社もエントリーの数が150程度になってからこの対策を行ったのですが、特に順位変動無くスムーズに移行完了しました。
]]><?php$ts = getlastmod();doConditionalGet($ts);function doConditionalGet($timestamp) {// A PHP implementation of conditional get, see // http://fishbowl.pastiche.org/archives/001132.html$last_modified = gmdate('D, d M Y H:i:s T', $timestamp);$etag = '"'.md5($last_modified).'"';// Send the headersheader("Last-Modified: $last_modified");header("ETag: $etag");// See if the client has provided the required headers$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :false;$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : false;if (!$if_modified_since && !$if_none_match) {return;}// At least one of the headers is there - check themif ($if_none_match && $if_none_match != $etag) {return; // etag is there but doesn't match}if ($if_modified_since && $if_modified_since != $last_modified) {return; // if-modified-since is there but doesn't match}// Nothing has changed since their last request - serve a 304 and exitheader('HTTP/1.1 304 Not Modified');exit;}?>サーバーのアクセスログをみると「HTTP/1.1" 200」から「HTTP/1.1" 304」に変わったことがわかりサーバー負荷が低減されていることを実感できます。]]>
しかし、 MTタグにより生成されるリンクを絶対パスから相対パスに変換するプラグインが存在します。
ドメイン名で始まるURLから、ドメイン名部分を削除し、パス指定のみのURLを生成することができるようになります。
]]>