2008-01-21

Internet ExplorerにおけるMETAエレメント

非常にスペックだけを書いたコンテンツを発見したので呆れた。呆れてても意味ないので、ちょっと覚えている範囲で書いてみる。

HTML - meta タグの仕様詳細まとめ
http://www.drk7.jp/MT/archives/001311.html

まずInternet Explorerだと、こんな動作ははっきり言ってしない。それを理解するためにはInternet Explorerの動作原理をまず知る必要がある(TechEdかなんかでたぶんマーケの人が説明してたけど)。

METAエレメントというのは、W3Cのスペック上は、HTTPヘッダの代わりになるようなことは書いてあるが、Internet Explorerの場合はそんなことはない。というのも、HTTPヘッダのハンドリングというのはWININET.DLLと呼ばれるモジュールがすべてハンドルする。しかもこのモジュールは、HTMLを解析することはしない。そのため、METAで何を書こうがWININET.DLLが知る由もないわけだ。

ただ、といってもヒストリカルなこともあるので、METAエレメントを利用しても全く無意味 ということではない。というのも、Trident(MSHTML.DLL)がHTMLを解析する際に、よく使われるようなもの、たとえば、Pragma: no-cacheのようなよく使われる一部のものだけは、Tridentで上書きするので、機能するようになっている。もちろん、Visual Styleを無効にするとかは、Tridentの機能でやってるわけだけど。

サーバーサイドの人たちは、スペック至上主義的な考えでプログラミングをするみたいだけど、実際のクライアントの実装がどうなっているのかにも興味を持ってほしいと思うね

参考

How to prevent caching in Internet Explorer
http://support.microsoft.com/?id=234067

0 件のコメント: