Webサイトの技術ノート

このサイトを公開するにあたり、実践した事などを書き留めておきます。

script要素はページの最後に

Webサイトの高速化 ルール6 scriptは下に! (Yahoo! developer netoworkより翻訳) | パフォーマンスチューニングblog | インターオフィス

可能な限り静的コンテンツにする

CGIスクリプトやPHPスクリプトなどの動的なコンテンツは、リクエストされる度にプログラムが実行されるため、サーバーの負担が大きくなります。

可能であればスクリプトではなく、HTMLファイルや画像ファイル(静的コンテンツ)を使うようにしています。

コンテンツの圧縮

xhtml ファイルなどを gzip 圧縮する事でネットワーク負荷を下げています。コンテンツを gzip 圧縮する方法としては「動的な圧縮」と「静的な圧縮」があります。

動的な圧縮
リクエストがあった時に、Apache の標準モジュール mod_deflate を使ったり、もしくはWebアプリケーションから gzip(1) を呼び出してコンテンツを動的に圧縮する方法。
静的な圧縮
あらかじめサーバー内に gzip 圧縮済みのファイルを置いておく方法。例えば foo.html と一緒に foo.html.gz も置いておく。

静的に出来る事は出来るだけ静的に行うべきだと思うので、後者の方法を採用しました。

設定方法に関しては「gzip 圧縮 multiviews」で検索して調べました。

PNG や ZIP など、既に内部的に圧縮されているファイル形式は圧縮する必要はありません。圧縮してもファイルサイズはほとんど変わらないので意味がありませんし、圧縮するという事は展開が必要になるわけで、閲覧者側の負荷も上がってしまいます。そのため、テキストファイルなど圧縮する価値があるものを対象とします。

ファイルの転送

ssh が利用できるなら、おそらく rsync(1) を使うのが最も効率的にファイルをサーバーへ転送する方法だと思います。

さくらインターネットでは ssh が使えるので、rsync(1) を使っています。

XHTMLファイルの検証(validation)

DTD による検証は不十分

WDG HTML Validator(Perl License): <a href="あ"> のような誤った URI があっても何も言わない。

W3C Markup Validator(GPL Compatible License): 同上。

Another HTML-lint(Proprietary): エラーを出す。

xmllint(MIT License) で Relax NG スキーマを使って検証: エラーを出す。

<a href="hoge://www.example.com/"> のように、文法違反ではないけれど一般的に使われる事のない scheme が指定されている場合に、警告を出して欲しいなぁ。もう validation じゃなくて lint だよね。いや、でもそれはリンクチェックすれば発見出来るなぁ。

とりあえず、リンクチェックもしよう。

あとは CSS と JavaScript のチェック。基本的な文法エラーは発見できるけど、ただどちらも動かさないと分からない部分が大きいんだよね。例えば CSS でいうと前景色は指定しているのに背景色は指定していないとか(前景色や背景色のデフォルト色に依存してしまう)、そういうのは警告を出すべきだけど、カスケードによって親要素から継承する事があるから、CSS ファイルを静的にチェックしただけでは検出できないよね。JavaScript も実行しないと分からない事が多いし・・・。