
下のリンク先のソースに、
<link rel="stylesheet" href="http://cdn-ak.b.st-hatena.com/css/common.css?809 … type="text/css" media="all" />
という行があります。こういう具合に拡張子 .css の後ろに暗号みたいな文字列がついてるのはたまに見かけるのですが、
どういう意図というか意味というか機能があるのでしょうか、ご教示ください。
▼スカート教授に会いに行く
http://b.hatena.ne.jp/articles/201206/9090
No.4ベストアンサー
- 回答日時:
まず意図としては、ANo.1さんが回答されているようにキャッシュ対策だと思われます。
ある程度大きな企業などではインターネット回線の帯域節約などのためにプロキシサーバを導入していることが多いですが、(CSSやFlashなど)更新頻度の低いファイルであればあるほど長くキャッシュする(更新確認を行わない)仕様のプロキシサーバもあります。
一方、URL中に "?" から続くQUERY STRINGがある場合は、「ユーザサイドから可変データが送られるならば、サーバからの応答も可変だろう」という事で一般的にはキャッシュされません。
そういったところから、静的コンテンツであっても変更の即時反映が重要なコンテンツにはあえて "?ほにゃらら" を付け足すことがあります。
"?"以降のQUERY STRINGをどう扱うかはサーバ/アプリケーション側が決めることですので、何も定義していなければ何も影響ありません。普通のそのあたりにあるhtmlページに "~.html?hogehoge" と入れても全く同じページが出ます。
次に「809c6b8b1eb6b9b83aa8a8b696d1848dbdabbcf8」という文字列ですが、使われている文字と桁数から見て SHA1ハッシュ値 ですね。
質問主さんの仰っているように年月日時分秒でも問題ありませんが、ハッシュを利用する事もユニークな文字列を作り出す簡単な方法のひとつです。
たとえば、「common.cssファイル自身のSHA1ハッシュ値をQUERY STRINGとして付与する」と決めておけばcommon.cssに少しでも修正が入ればSHA1ハッシュ値も全く別物に変わりますので運用としては楽だと思います。
あとは QUERY STRING はWebサーバのアクセスログに残るので、もしかすると何らかの統計などを取るためのキーワードなどをハッシュにしているのかもしれません。
※ハッシュは一方向関数のため、元の文字列/データは基本的に分かりません。
>更新頻度の低いファイルを長くキャッシュする仕様のプロキシサーバもあります。
>"?"以降のQUERY STRINGをどう扱うかはサーバ/アプリケーション側が決めること
>普通のhtmlページに "~.html?hogehoge" と入れても全く同じページが出ます。
>ハッシュを利用する事もユニークな文字列を作り出す簡単な方法のひとつです。
なるほど。完璧な解説、ありがとうございました。
No.5
- 回答日時:
<!--[ANo.1 のお礼より引用]
しかしながら、
それだけの理由にしてはなんだかずいぶん念入りに無駄に長いこと(ユニークな文字列が必要なのであれば、
年月日時分秒でも足りるはず)と
[引用終わり]-->
セキュリティー上の理由。
想定可能だと面倒なことになるから。。。
<!--[ANo.1 のお礼より引用]
「?809c6b8b1eb6b9b83aa8a8b696d1848dbdabbcf8%22」をググるといくつかヒットすることから、
[引用終わり]-->
『809c6b8b1eb6b9b83aa8a8b696d1848dbdabbcf8 -okwave』で検索すればわかるけど
同じコンテンツのコピーのようなきがするよ?
>同じコンテンツのコピーのようなきがするよ?
いや、質問を投稿する前に検索していくつかヒットしたんですが、今思うと夢でも見てたのかも知れません。
>セキュリティー上の理由。想定可能だと面倒なことになる
なるほど。ありがとうございました。
No.3
- 回答日時:
>僕のレベルが低いせいだと思いますが、2割くらいしか理解できません。
809c6b8b1eb6b9b83aa8a8b696d1848dbdabbcf8の値自体は、何かの意図があって利用しているのでしょう。
googleで検索したとのことですが、QUERY_STRINGは、googleでも使っていて検索結果のURL欄に?に続いて、name=値&name=値&・・・・とありますね。QUERY_STRINGはURLに使われる文字--ASCIIに限られますから、エンコードされています。
一方PATH_INFOのほうはwikiで使われていてwikiで検索すると/で区切られたデータが見えるはず・・
Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi )でURLの後ろに、/やその後に?で区切って色々な英数文字を入れてみると・・・
[例]http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/toast …
まあ、サーバーに何らかの情報を伝えたい手段として、QUERY_STRING,PATH_INFO,標準入力などフォームを使う方法や、cookieなど様々な方法があるということです。
No.2
- 回答日時:
Windows使いですね。
Windowsの束縛から脱しましょう。Windowsは、拡張子がすべてのようなOSですが、他のOSは拡張子はWindowsほど意味を持ちません。
この場合、.cssはほとんど意味をもちません。そのURLは単に
http: HTTPプロトコルによる通信
// インターネット
cdn-ak.b.st-hatena.com サーバー名
/css/common.css パス情報とファイル名
?809c6b8b1eb6b9b83aa8a8b696d1848dbdabbcf8 QUERY_STRINGS サーバーに与える情報
受け手からはわかりませんが、
・/css はCGIプログラムで、/common.css は単なるPATH_INFO(パス情報)
・/css はディレクトリで、/common.cssは、プログラム
・/css/hoge.cgi などのプログラムがあり、/common.css は単なるPATH_INFO(パス情報)
などが考えられます。
そのプログラムが起動されたとき、PATH_INFOやQUERY_STRINGを利用して、スタイルシートを作成して、HTTP応答ヘッダにcontebt-type:text/css をつけて送り出せば、ブラウザは、その出力をスタイルシートと判断して処理します。
私は、QUERY_STRINGでは気持ちが悪いので--個人的好みですが--PATH_INFOをよく使います。CSSというCGIを置いておいて、サーバーには/standerd.css などのPATH_INFOで動作をコントロールします。・・・ユーザーがスタイルシートを選択すると、それが標準スタイルシートとして出力させるとか・・・
回答ありがとうございます。が、
僕のレベルが低いせいだと思いますが、2割くらいしか理解できません。
>Windows使いですね。
僕がですか? 僕は Mac ユーザーですが。
ただ、「QUERY_STRINGS」というキーワードを教わったので、
そこから何か知見が広がりそうな気がします。ありがとうございました。
No.1
- 回答日時:
HPの管理者がcommon.cssを修正してアップロードした場合、閲覧者は修正前のキャッシュが残っていて修正前の見え方になってしまうことがあります。
管理者が意図しない見え方をされることを防ぐために
ランダムな文字列をつけています。
無理やり別のファイルだということを認識させて古いキャッシュを読まないようにしているのですね。
回答ありがとうございます。意外な回答で、なるほどです。
たしかに「修正してアップロードしたのにキャッシュが残っていて修正前の見え方になる」ことはありますね。
.css の後ろに「?で始まるてきとーな文字列」をつけると、
「別ファイルと認識される、かつ、パスとしては無視してくれる」ということでしょうか。
しかしながら、
それだけの理由にしてはなんだかずいぶん念入りに無駄に長いこと(ユニークな文字列が必要なのであれば、
年月日時分秒でも足りるはず)と、
「?809c6b8b1eb6b9b83aa8a8b696d1848dbdabbcf8%22」をググるといくつかヒットすることから、
いまいち納得できないのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- Ruby htmlの記述で link rel=stylesheet href=ress.cssの指定をする l 1 2023/04/02 21:15
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS PrettierのHTMLの記述変更 linkタグ 1 2022/06/23 04:06
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS CSSが上手く反映されないみたいです 2 2022/11/21 16:19
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cssファイルの名称付け
-
cssで、ボタンのテキスト部分を...
-
/から始まるパスについて
-
エクセルファイルにCSSを読み込...
-
ワードプレスで太字が反映され...
-
どうすればなるんですか?
-
外部ファイルによるCSSにおいて
-
ディレクトリ構成【「common」...
-
Dreamweaver のテンプレートで...
-
html/cssの辞書
-
複数のhtmlで同じcssファイルを...
-
jspにcssを反映させるには
-
相対パスでも絶対パスでもない...
-
Bootstrapとbootswatchの設定
-
三角アイコンの消し方。
-
ブラウザでプレビューでCSSが反...
-
ドキュメントルートより上の階...
-
<frameset の属性cols="50,*"を...
-
outlook 文字を揃えたい。tab...
-
マイクロ(μ)の文字を半角で出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cssファイルの名称付け
-
ディレクトリ構成【「common」...
-
サイトを作る時のcssファイルは...
-
Dreamweaver のテンプレートで...
-
jspにcssを反映させるには
-
CSSファイルを入れるフォルダは...
-
エクセルファイルにCSSを読み込...
-
cssで、ボタンのテキスト部分を...
-
ブラウザでプレビューでCSSが反...
-
定数の定義とかはできますか?
-
複数のhtmlで同じcssファイルを...
-
スタイルシート(CSSスタイル)...
-
一部のページにデフォルトCSSを...
-
CSSによる簡易な複数言語対応に...
-
css の適用について
-
HTMLの CSSのファイルというの...
-
スタイルシートを取り込みたい
-
HTMLコーダーをやっています。...
-
CSSを最近始めました。実は、2P...
-
a:link で指定した色にならない
おすすめ情報