« Google Related Linksrel="tag"というMicroformat »

Trackback address for this post

Trackback URL (right click and copy shortcut/link location)

3 comments

Comment from: masken [Member]

現状、静的なHTMLの方は、微妙に動的に出力されるコンテンツの内容(リンクのURL等)が異なるので、それの利用は保留中です。

2006/04/05 @ 16:37
Comment from: masken [Member]

本文の方に、.htaccess

RewriteCond %{QUERY_STRING} ^$
RewriteCond %{PATH_INFO}    ^$
RewirteRule ^blog/FreeBSD$  /blog/static-FreeBSD

のように書いてたけど、これだとログイン状態(クッキーにIDとパスワードのハッシュが保存される)の時でも、

GET /blog/FreeBSD

とした時に、静的に書き出したHTMLの方が表示されてしまう。

また、

  • http://www.xdelta.net/blog/FreeBSD

のURLを閲覧していた後、ログインフォームに入ると、IDとパスワードのPOST先が同じ

  • http://www.xdelta.net/blog/FreeBSD

というURLになってしまう(前見ていたページへPOSTで戻る)ので、メソッドによって分けなければならない(静的なHTMLにPOSTしてもしょうがないし、このURLからはログインできなくなる)。

したがって、該当する.htaccess

RewriteCond %{REQUEST_METHOD}    ^(?:HEAD|GET)$
RewriteCond %{QUERY_STRING}  ^$
RewriteCond %{PATH_INFO}     ^/?$
RewriteCond %{HTTP_COOKIE}   !cookieb2evouser=
RewriteCond %{HTTP_COOKIE}   !cookieb2evopass=
RewriteRule ^blog/(all|FreeBSD|masken|links)/?$  /blog/cache-$1.html    [L]

という具合に修正(ディレクトリと勘違いするユーザもいるので、スタブ ファイルの最後にスラッシュを付けてても良い事にしてる。また、静的なコンテンツの方でもネゴシエーションを使用しないことにするので、ファイル名を最後まで付ける)。

あと、クッキーの内容で表示するコンテンツを切替えるので、プロキシにキャッシュされないよう

<Files ~ "^cache-(?:all|FreeBSD|masken|links)\.html$">
       Header append Vary "Cookie"
       Header set Cache-Control "private, must-revalidate, max-age=0"
       Header set Expires "-1"
</Files>

も明示。

PHPの方にも、VaryヘッダにCookieを付け加えた方が良い(この辺は、b2evolutionの役割だと思うけど)。

2006/05/14 @ 22:24
Comment from: masken [Member]

しかし、ページを更新する度に、管理画面から手動で静的なHTMLを生成するのは、はっきりいって面倒(よって、また、静的なHTMLを生成することは却下…)。

先日、Apache 2.2にもしたことだし、cache_moduleの使用を試みてみたけど、preforkだと、disk_cache_moduleしかモジュールが生成されないみたいで、これだと余程速いディスクでない限り、却ってパフォーマンスが落ちてしまう気がする…。

そのうち、workerでも、試みてみようかな? mem_cache_moduleが使えると思うし。

2006/05/14 @ 23:22

This post has 107 feedbacks awaiting moderation...

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)