2013-02-21 8 views
6

PHPファイル(styles.php)にスタイルシートを作成し、リクエストがあったユーザーに応じてスタイルシートが動的になるようにしたい。個々のユーザーごとにスタイルシートは一定であり、クライアントブラウザにキャッシュされる必要があります。ブラウザで動的PHPスタイルシートをキャッシュできるようにする

コンテンツタイプとキャッシュコントロールなどのヘッダーを設定することでこれを達成できると読んだことがありますが、これを動作させることはできません。明らかにそれ以上のことがあり、おそらくそれは不可能かもしれません。ブラウザは常にヘッダーのキャッシングを聞いているようには見えません。

誰かがPHPファイルをブラウザにキャッシュさせるために必要なことを知っていますか?

ダイナミックCSSをHTMLのスタイルブロックに入れたくないので、私はこのために自分のApache設定を変更したくありません。本当に私が望むことができない場合、私はまた知りたいです。ありがとう!

+0

をスタイルシートに影響を与える要因は何ですか?ユーザーはスタイルシートを設定できますか?またはランダムなものを作成しますか? –

+0

私たちのシステムにはたくさんのモジュールがあり、ログインしているユーザーのためにいくつかのスタイル設定を返す中央Webサービスがあります。私の場合、彼らはランダムですが、明らかに彼らはそれが属しているグループのようないくつかのユーザーの詳細に関連しています。 –

+0

あなたのスタイルスクリプトが呼び出されたときにPHPセッションを使用しますか?それが事実なら、これはおそらくあなたの問題です。私は今チェックすることができませんでしたが、セッションを使用する場合は、デフォルトでキャッシュヘッダーを上書きします。そのため、ブラウザがスタイルシートについて受け取るヘッダをチェックしてください。 –

答えて

0

これは似ているようですので、ご確認ください。

Cache Headers for dynamic Css

+0

彼はスタイルシートをユーザーからユーザーに変えたいと思うので、実際には別の質問です。キャッシュコントロールは 'public'ではなく' private'(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1) –

+0

ですが、私はこのページを見てきました。それを試してみました。残念ながら、ブラウザはphpスタイルシートを取得し続けます。 –

+0

あなたはまたヘッダーを試しましたか( 'Cache-Control:max-age = 86400') – Ankit

10

これらのヘッダは正常に動作する必要があります:

$expires = 60*60*24; // how long to cache in secs.. 
header("Pragma: public"); 
header("Cache-Control: maxage=".$expires); 
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT'); 
header('Content-type: text/css'); 
+0

Wordpressで動的CSSスタイルシートを使用して、まさに同じ問題を抱えていましたが、上記の問題を修正しました!ありがとう:) – ss888

関連する問題