私はPHPサイトに動的に生成された多くのページがあります。ほとんどの場合、コンテンツは特定の日に変更されないため、パフォーマンスを向上させるためにmod_cacheに切り替えようとしています。
Apache.orgのmod_cacheページ を含むWeb上の例に従って、可能な限りmod_cacheを構成しました。 LogLevel debug
を設定すると、キャッシングに関する少しの情報が表示されます。このような行のペアはたくさんあります:
[Fri Jun 01 17:28:18 2012] [debug] mod_cache.c(141): Adding CACHE_SAVE filter for /foo/bar
[Fri Jun 01 17:28:18 2012] [debug] mod_cache.c(148): Adding CACHE_REMOVE_URL filter for /foo/bar
CacheEnable disk /foo
を設定して、/ fooの下にあるすべてのものをキャッシュしたいことを示しているので、これは問題ありません。私はmod_cacheの初心者ですが、これらの行についての私の理解は、URLがキャッシュされることになっていることをmod_cacheが確認したことを意味しますが、キャッシュにデータを保存していることを示す行がさらにあるはずですその後、同じURLへの後続のヒットでそれらを取得します。
F5の更新の有無にかかわらず、または別のブラウザーや別のコンピューターで、顔が青くなるまで同じURLにアクセスできます。ログに表示されるのは常にその行のペアであり、他には何も表示されません。
CacheEnable disk /
を設定すると、さらに多くのアクティビティが表示されます。しかし、サイト全体をキャッシュしたくはありません。また、サイトには非常に多くの異なるサブパスがあるため、必要なすべての場所にno-cache
ヘッダーを設定するためにコードを変更する必要はありません。
ここではmod_rewriteが使用されており、/ foo/barをindex.php?baz=/foo/bar
などに書き換えていますが、私の理解では、mod_cacheは書き換え後のURLではなく書き換え前のURLを使用しています。
私の知る限り、応答ヘッダーがキャッシュの邪魔にならないようにしています。 1つのヒットの例を次に示します。
Cache-Control:must-revalidate, max-age=3600
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:16790
Content-Type:text/html
Date:Fri, 01 Jun 2012 21:43:09 GMT
Expires:Fri, 1 Jun 2012 18:43:09 -0400
Keep-Alive:timeout=15, max=100
Pragma:
Server:Apache
Vary:Accept-Encoding
mod_cacheの設定は次のとおりです。
CacheRoot /var/cache/Apache2/
CacheDirLevels 3
CacheDirLength 2
CacheEnable disk /foo
Mod_cacheがキャッシングの仕事を邪魔しているのは何ですか?
マップしようとして同じ問題に直面していました
CacheEnable Disk /api
機能した唯一のマッピングは
CacheEnable Disk /
すべてをキャッシュしました。
ドキュメントには、mod_cacheはurl-rewriteの後に実行されると記載されていますが、実行されませんでした。それを機能させるために、私はそれをに変更しました
CacheEnable Disk /index.php/api
これは私の構成であり、正常に動作します。
<IfModule mod_disk_cache.c>
CacheEnable disk /
CacheRoot /var/cache/Apache2/mod_disk_cache
CacheIgnoreCacheControl On
CacheMaxFileSize 2500000
CacheIgnoreURLSessionIdentifiers jsessionid
CacheIgnoreHeaders Set-Cookie
</IfModule>
あなたのニーズに合ったCacheIgnoreURLSessionIdentifiersが必要なので、おそらくPHP
CacheIgnoreURLSessionIdentifiers PHPSESSID
ジャニングに関して