- ベストアンサー
css,javascriptの呼び出しについて
某サイトで、 cssの呼び出しで <link rel="stylesheet" href="xxxx.css?v=yyyyyy" > javascriptの呼び出しで <script src="xxxx.js?v=yyyyyy"> という記述がされていました。 phpスクリプトではよく見かける?v=yyyyyyという記述ですが、cssとjavascriptでは見かけた事がないので色々と調べたのですが、答えが見つかりません。 上記に示した様な記述方法は一般的なものなのでしょうか? 取り留めのない質問ですがよろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A.No2の回答の通り、拡張子には(人間にとって分かりやすいという以上の)本質的な意味は無いので .cssや.jsでもサーバー側で何らかのプログラムが走っている可能性はあります。 それとは別の可能性として、ブラウザ側のキャッシュで古いファイルが参照されないように 適当なクエリ(?以降の文字列)をつけているだけかもしれません。 毎回xxxx.cssにアクセスしていたのでは、 xxxx.cssを更新してもブラウザはキャッシュに残った古いxxxx.cssを使うことがあります。 これを避ける為に、xxxx.cssを参照するHTMLの側で xxxx.css?v=yyyyyy のyyyyyyの所をファイルを更新したときに変更するという手段があります。 yyyyyyのところが変わるとブラウザは別のファイルだと判断しますから 古いキャッシュは参照されません。 (この目的の場合、サーバー側では?v=yyyyyyは無視することになります。)
その他の回答 (3)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
No.2補足です。 >例]以下のサイトは、解りやすいように.cgiという拡張子がついていますが、付けないほうほうもあります。 >http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi >この、後ろに好きなパスや、QUERY_STRINGSを付けてみると良い ファイルの拡張子はまったく関係ありません。これをdefault.cssというファイル名にして実行させることも出来ます。 また http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/default.css?a=bでも・・・
お礼
参考にさせて頂きます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
xxxx.css?v=yyyyyy は、URL(URI)ですから、・・・それに適合していればなんでもOK ブラウザは、href属性値を見て、通信手段(プロトコル)、ファイルのあるサーバー、ファイル名、QUERY STRINGS(?より後ろ)を算出してサーバーに要求します。たとえば、その記述のあるHTMLが、 http: //hoge.com/ABC/EFG/index.html でしたら HTTPプロトコルで、hoge.comサーバーに対して/ABC/EFG/xxxx.css?v=yyyyyyというファイルを要求します。 サーバーにおいては、通常の処理(どう処理するかは変更できますが)を行います。 1)QUERY_STRINGSは、環境変数として保持 2)/ABC/EFG/xxxx.cssを探す。 そのファイル(xxxx.css)が存在していれば、そのアクセス規定に従ってそのファイルを提供する。 ・それがファイルなら、そのまま提供する。 ・それが実行ファイルなら、その実光ファイルに処理をゆだねる。 そのとき、環境変数も渡される。(A) そのファイルが存在していないときは、それをディレクトリとみなして開いてみる。 ・ディレクトリであれば、ディレクトリ処理の指定に従う 「INDEXファイルを探す」「一覧を表示する」「エラー表示など」 3) そのxxxx.cssが存在しなければ、それを環境変数PATH_INFOに格納する。 ・それが実行ファイルなら、その実光ファイルに処理をゆだねる。 そのとき、環境変数とPATH_INFOも渡される。(A) そのファイルが存在していないときは、それをディレクトリとみなして開いてみる。 ・ディレクトリであれば、ディレクトリ処理の指定に従う 「INDEXファイルを探す」「一覧を表示する」「エラー表示など」 以下同様に/まで探す。 極めて単純な機械的処理がされます。 【Windows】の一般的処理と異なり、拡張子は関係ありません。 /ABC/EFG/xxxx.css のxxx.cssは、実行ファイルかも知れません、PHPやPerl,AWKであってもよい。 もちろん、 /ABC/EFGが実行ファイルである可能性も、/ABC/EFG/がディレクトリであって、その中のindex.cgi(なんでもない)が実行ファイルである可能性もあります。 同様に /ABCが実行ファイルである可能性も、/ABC/EFG/がディレクトリであって、その中のindex.cgi(なんでもない)が実行ファイルである可能性もあります。 さらには、 /ABC/EFG/xxxx.cssも存在していなくて、/にindex.cgiやindex.htmlなどの実行ファイルがあるだけかもしれません。 例]以下のサイトは、解りやすいように.cgiという拡張子がついていますが、付けないほうほうもあります。 http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi この、後ろに好きなパスや、QUERY_STRINGSを付けてみると良い http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/ABC/test.html http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/ABC/EFG/test.html http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi?ABC=EFG http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/test.html/test.html?NAMAE=ORUKA&Code=1951 よって、要求したファイルが送られてきたとしても http: //hoge.com/ABC/EFG/xxxx.css?v=yyyyyy であったとしても、確実なことは、HTTPサーバーであるhoge.comに、実際に ABC/EFG/xxxx.css?v=yyyyyy ABC/EFG/xxxx.css ABC/EFG/ ABC/EFG ABC/ ABC が、実際に存在するか否かは、外からはわかりません。 新聞社のサイトなどは、おおむねそうであって、一つ一つの記事のURLのファイルは実在はしていなくて、動的に提供されていることが多いです。
お礼
自分も動的にcssとjsが生成されているのかと考えておりました。 詳しい解説ありがとうございます。
- dscripty
- ベストアンサー率51% (166/325)
xxxx.css という php か jsp か cgi か分からないけど何かのサーバサイドプログラムか もしくは、 単に、トラッキング用じゃないかな?
お礼
サーバーサイドプログラムによる動的な生成が一番怪しいかと思っています。 トラッキングに関してはよく分かりません。 ありがとうございました。
お礼
キャッシュの件、なるほどと思いました。 ありがとうございました。