私はまだCakePHPには新しく、アセットキャッシングを最適化する方法を理解するのに問題があります。CakePHPと.htaccessアセットキャッシング
戻る私はまだ純粋なPHPでコーディングされたときに、これは私が私の.htaccessとheader.inc.phpファイルとどうなるのかです:
.htaccessファイル:
<IfModule mod_rewrite.c>
# Turn the rewrite engine on
RewriteEngine On
# The following rewrite rule makes it so that if a URL such as
# http://example.com/css/style.1291314030.css is requested
# then it will actually load the following URL instead (if it exists):
#
# http://example.com/css/style.css
#
# This is to increase the efficiency of caching. See http://bit.ly/9ZMVL for
# more information.
RewriteCond %{DOCUMENT_ROOT}/$1/$2.$3 -f
RewriteRule ^(css|js)/(.*)\.[0-9]+\.(.*)$ /$1/$2.$3 [L]
</IfModule>
<IfModule mod_expires.c>
# Optimize caching - see http://yhoo.it/ahEkX9 for more information.
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
</IfModule>
header.inc.php :私は、クライアントのウェブサイト上で働いていたとき、私はハードリフレッシュを実行したり、キャッシュをクリアするためにクライアントに通知しなければならなかったことはありませんので、
foreach ($css_to_use as $current_css)
{
echo "\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"css/$current_css." . filemtime("{$_SERVER['DOCUMENT_ROOT']}/css/$current_css.css") . ".css\">";
}
このセットアップは非常によく働きました。それは完全に自動であり、キャッシュのメリットがありました。
私はCakePHPの「アプリ/設定/ core.phpの」ファイルで、1のコード行を使用することができていることがわかり:
Configure::write('Asset.timestamp', 'force');
しかし、唯一のURLは次のようになりますこと:
<link rel="stylesheet" type="text/css" href="/css/style.css?1291314030" />
私はそれが好きなように動作しません。アセットキャッシングを達成する最良の方法は何ですか?
ありがとうございます!
クエリーストリングを追加するのはURLを変更するのと同じですが、ブラウザはそれを考慮してCSSをリロードします。私はいつもフラッシュコンテンツで同じことをしています。 – grapefrukt
ええ、私は自分のテストをしているときに間違いを犯していて、実際にはうまくいきます。この質問を削除する必要がありますか? – Nick
私は適切な回答を投稿し、将来の参考になるためにここに留まることができます。 – grapefrukt