ちなみに、Ubuntu を再起動すると再読み込みが行われます。ファイル名を変えても、変更は反映されます。
どうやらファイルが再読み込みされていないことが問題のようです。
なお、ブラウザキャッシュの問題ではないようです。(キャッシュを切って試しました)
勘所がある方がいらっしゃいましたら、改善方法のご教授を宜しくお願いいたします。
# CSS link tag
<link rel="stylesheet" type="text/css" href="/css/test.css?1255501377" />
?以降の数字は、必ず再読み込みさせたいため、timestampを出力
# 参考情報
http://www.ubuntulinux.jp/products/JA-Localized/virtualbox
現状のシステムを維持したままなんとかするには
CSSファイルを更新ではなく
一旦削除 -> 更新したい内容で新規作成/copyするのが有効、ではないでしょうか。
別のディレクトリでマスターを作成しておいて
rm /htdocs/hoge.css
cp hoge.css /htdocs
的なスクリプトを作っておけば比較的簡単かと思います。
ubuntsuの設定をどう変更してもCSSの更新への追従を優先するのであれば
ramfsの設定を変更して、apacheのドキュメントルート以下をramfsでキャッシュしないよう
/etc/initramfs-tools/initramfs.conf
あたりに設定するとよい様に思われます。(試した訳では無いので実際できるかどうか不明です)
以下推測した内容です。
ブラウザのキャッシュを切って再現、pragma:no-cacheも効かない、日付が同一 -> ブラウザのキャッシュではない
Apache再起動で再現 -> Apacheのバッファやモジュールではない
Apacheにmod_proxyやmod_cache、memcachedは入っていない ->HTTPキャッシュではなさそう
mod_phpではファイルを生成していない -> Apache拡張の問題でも(おそらく)ない
しかしubuntsu再起動で解消
-> システムのメモリクリアとは同期するのに、アプリのメモリ解放では再現
-> OSもしくはFW/FS周りの問題
VirtualBox向けUbuntsuでは
/etc/initramfs-tools/initramfs.conf
がデフォルトでは
MODULES=most
に設定されているので、Apacheのドキュメントルート以下がramfsでキャッシュされているのではないか、
と推測しました。
ramfsの機能を切るのはあまりお勧めできませんので
作業的に簡単なのはキャッシュをフラッシュすることで
推測が正しければ目的のファイルを一旦削除することで解消するだろうと考えた次第です。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/filesystems/ram...
これで解消するとよいのですが。。。
ご回答ありがとうございます。
ただ、Apache cache モジュールは利用していないようです。
# /usr/sbin/apache2ctl -M
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
>Ubuntu を再起動すると再読み込みが行われます
これはVirtualBoxを含めての再起動を意味していますか?
いずれにしても、VirtualBoxの仮想NICのキャッシュが怪しいですね。
CSS以外、たとえばHTMLを変更したら、すぐにブラウザに反映されますか?
ご回答ありがとうございます。
また、色々とコメントもありがとうございます。
>これはVirtualBoxを含めての再起動を意味していますか?
いいえ、Ubuntu だけの再起動(VirtualBoxは起動しっぱなし)で問題は解消します。
>いずれにしても、VirtualBoxの仮想NICのキャッシュが怪しいですね。
仮想NICのキャッシュですか…。
なかなか難しそうな問題になりそうですね><
ちなみに、HTTP,SSH でアクセス出来るよう、ポートフォワードの設定は施しています。
設定の参考にしたサイトは、以下のものです。
http://kmnk.blogspot.com/2009/03/osossvn.html
>CSS以外、たとえばHTMLを変更したら、すぐにブラウザに反映されますか?
HTMLの変更は、即座に反映されます。
同一名称で画像を作り替えたりした場合は、再読み込みすることで新しい画像も表示されます。
ブラウザキャッシュの問題ですね。残念ながら。
ブラウザキャッシュの問題であれば、正直うれしいのですが。。。
解決策の心当たりがあれば、ご教授頂ければと思います。
"httpd.conf" に "ExpiresByType text/css" が設定されていませんか?
度々のご回答ありがとうございます。
早速、ご指摘の点を確認してみました。
調べたところ、mod_expires は、利用していないようでした。
ただ事象は解決しなかったものの、ApacheでデフォルトのCache期間を指定出来ることを初めて知り、勉強にはなりましたw
情報のご提供ありがとうございます。
ブラウザのキャッシュ無視のリロード
IE なら CTRL + リロードボタン
Firefox なら Shift + リロードボタン
するとどうでしょう?
あと、HTML に
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Fri, 03 JUL 1992 00:00:00 GMT">
を挿入したり、
HTML をスクリプトなどで吐き出してるのであれば、
print "Pragma: no-cache\n"; } # ← HTTP 1.0
print "Cache-Control: no-cache\n";} # ← HTTP 1.1
のように、キャッシュしないように HTTP ヘッダに付けてみるとどうでしょう?
ご回答ありがとうございます。
やはりブラウザキャッシュ周りが怪しそうなんですね。
今後は重点的に探ってみようと思います。
以下に、ご回答に対しコメントさせていただきます。
> ブラウザのキャッシュ無視のリロード
CSSの更新は反映されません。
> あと、HTML に
> <meta http-equiv="Cache-Control" content="no-cache">
> <meta http-equiv="Expires" content="Fri, 03 JUL 1992 00:00:00 GMT">
> を挿入したり、
HTMLは上記と似たような形で記載しております。
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GM" />
現状のシステムを維持したままなんとかするには
CSSファイルを更新ではなく
一旦削除 -> 更新したい内容で新規作成/copyするのが有効、ではないでしょうか。
別のディレクトリでマスターを作成しておいて
rm /htdocs/hoge.css
cp hoge.css /htdocs
的なスクリプトを作っておけば比較的簡単かと思います。
ubuntsuの設定をどう変更してもCSSの更新への追従を優先するのであれば
ramfsの設定を変更して、apacheのドキュメントルート以下をramfsでキャッシュしないよう
/etc/initramfs-tools/initramfs.conf
あたりに設定するとよい様に思われます。(試した訳では無いので実際できるかどうか不明です)
以下推測した内容です。
ブラウザのキャッシュを切って再現、pragma:no-cacheも効かない、日付が同一 -> ブラウザのキャッシュではない
Apache再起動で再現 -> Apacheのバッファやモジュールではない
Apacheにmod_proxyやmod_cache、memcachedは入っていない ->HTTPキャッシュではなさそう
mod_phpではファイルを生成していない -> Apache拡張の問題でも(おそらく)ない
しかしubuntsu再起動で解消
-> システムのメモリクリアとは同期するのに、アプリのメモリ解放では再現
-> OSもしくはFW/FS周りの問題
VirtualBox向けUbuntsuでは
/etc/initramfs-tools/initramfs.conf
がデフォルトでは
MODULES=most
に設定されているので、Apacheのドキュメントルート以下がramfsでキャッシュされているのではないか、
と推測しました。
ramfsの機能を切るのはあまりお勧めできませんので
作業的に簡単なのはキャッシュをフラッシュすることで
推測が正しければ目的のファイルを一旦削除することで解消するだろうと考えた次第です。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/filesystems/ram...
これで解消するとよいのですが。。。
ご回答ありがとうございます。
また、ご返信が遅れ失礼いたしました。
業務で出ずっぱりで、諸々確認できずにおりました。
> 一旦削除 -> 更新したい内容で新規作成/copyするのが有効、ではないでしょうか。
対応には、取り急ぎ上記案をいただきました。
無事なんとか稼働しております。
ありがとうございました。
ご回答ありがとうございます。
また、ご返信が遅れ失礼いたしました。
業務で出ずっぱりで、諸々確認できずにおりました。
> 一旦削除 -> 更新したい内容で新規作成/copyするのが有効、ではないでしょうか。
対応には、取り急ぎ上記案をいただきました。
無事なんとか稼働しております。
ありがとうございました。