1

Magento 1.4.2 CEを搭載したサーバーを入手し、APC 3.1.9がインストールされ、Magentoがそれをバックエンドキャッシュとして使用するように構成されています。

キャッシングで奇妙な動作を経験しました。バックエンドで行ったすべての変更は、apache2が再起動されるか、APCオペコードキャッシュがクリアされるまで表示されません。これには、ウェルカムメッセージの変更やGoogleAnalyticsのアクティブ化/非アクティブ化などが含まれます。

質問: APCが全ページをキャッシュするのはなぜですか?この動作は望ましくなく、標準ではないようです。バックエンドを少し変更するたびに、オペコードキャッシュをクリアする必要があります。Magentoキャッシュをクリアしても効果はありません。

完全を期すために、ここに私たちの/etc/php5/conf.d/apc.ini

extension=/usr/lib/php5/20090626/apc.so
apc.enabled=1
apc.file_update_protection=2
apc.optimization=0
apc.shm_size=128M
apc.include_once_override=0
apc.shm_segments=1
apc.gc_ttl=7200
apc.ttl=7200
apc.num_files_hint=1024
apc.enable_cli=0

Google Analyticsの有効化/無効化も、7200sTTL以降は効果がありません。おそらく、現時点ではキャッシュがいっぱいになっていないためです。その容量の40%が約98%のヒット率で使用されます。

これは、apc.phpから出力される完全な設定です。

apc.cache_by_default    1
apc.canonicalize        1
apc.coredump_unmap      0
apc.enable_cli      0
apc.enabled         1
apc.file_md5        0
apc.file_update_protection  2
apc.filters 
apc.gc_ttl          7200
apc.include_once_override   0
apc.lazy_classes        0
apc.lazy_functions      0
apc.max_file_size       1M
apc.mmap_file_mask  
apc.num_files_hint      1024
apc.preload_path    
apc.report_autofilter   0
apc.rfc1867         0
apc.rfc1867_freq        0
apc.rfc1867_name        APC_UPLOAD_PROGRESS
apc.rfc1867_prefix      upload_
apc.rfc1867_ttl     3600
apc.serializer      default
apc.shm_segments        1
apc.shm_size        128M
apc.slam_defense        1
apc.stat            1
apc.stat_ctime      0
apc.ttl         7200
apc.use_request_time    1
apc.user_entries_hint   4096
apc.user_ttl        0
apc.write_lock      1
4

2 に答える 2

1

APC は端末と Web ベースの両方のキャッシュを保持します。コマンド ラインではなく、Web ベースの URL 呼び出しからのみ「Web」キャッシュ ヒットをクリアできるため、Apache の再起動後にAPC Web ベースのキャッシュがクリアされるのはこのためです。ほとんどの場合、同様のスクリプトを使用してキャッシュをクリアするスクリプトをセットアップして、CLI またはスクリプトから簡単に呼び出すことができます。

echo "Clearing APC web cache\n";
system('wget --spider --quiet http://localhost/clear_apc_cache.php');

echo "Clearing APC command line user cache\n";
apc_clear_cache('user');

echo "Clearing APC command line opcode cache\n";
apc_clear_cache();

clear_apc_cache.php明らかに、同じ 2 つの APC 内部メソッド呼び出しを含む対応するファイルを作成する必要がありますapc_clear_cache();apc_clear_cache('user');

また、APC キャッシュも表示するようにローカル エリアをセットアップします。

http://www.electrictoolbox.com/apc-php-cache-information/

于 2012-04-13T15:22:07.287 に答える
0

apc.stat をゼロに設定することもできます。(apc.stat=0) を PHP.ini ファイルに追加します。

1 に設定すると、ファイルの更新を検索しません。これにより、パフォーマンスが向上しますが、更新後に apache の再起動が必要になります。0 に設定すると、ファイルの更新がチェックされ、キャッシュに追加されます (つまり、更新がサイトに表示されます)。

于 2012-07-01T03:46:58.927 に答える