Magento 1.4.2 + APC:清除缓存对更改设置没有影响
我们得到了一台装有Magento 1.4.2 CE的服务器,安装了APC 3.1.9并将Magento配置为将其用作后端缓存。Magento 1.4.2 + APC:清除缓存对更改设置没有影响
我们经历了一个奇怪的行为与缓存。直到apache2重新启动/ APC操作码高速缓存已被清除,才会显示我们在后端进行的每次更改。这包括例如更改欢迎消息或激活/停用Google Analytics。
问题:为什么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
启用/禁用谷歌Analytics(分析)也将有7200 TTL后没有效果。也许是因为我们的缓存目前没有运行完整。其容量的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
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();
显然,你就需要使用相同的两个APC内部方法创建clear_apc_cache.php
相应的文件中调用,apc_clear_cache();
和apc_clear_cache('user');
而且,我会设置一个局域网,查看APC缓存还有:
好吧,这不是关于修复Magento怪异的行为,但是不必每次都不必重新启动web服务器。所以这被接受。顺便说一句。我们已经运行了缓存信息,请参阅文本中对apc.php的引用。 – SebiF 2012-04-16 07:31:55
您还可以设置apc.stat为零。 (apc.stat = 0)在你的PHP.ini文件中。
如果它设置为1,它不会查找文件更新,这会提供更好的性能,但需要在更新后重新启动apache。设置为0它将检查文件更新并将它们添加到缓存中(即,您的更新将在网站上可见)。
我很遗憾地告诉你,这是错误的。它完全相反。 apc.stat = 1将让APC检查已更改的文件,而apc.stat = 0将禁用对已更改文件的检查。在问题的配置中选择的设置是可以的。参见[php手册](http://www.php.net/manual/de/apc.configuration.php#ini.apc.stat) – SebiF 2012-07-05 18:34:21
我得到了禁用Magento后端缓存的提示,因为它比APC操作码缓存本身对性能的影响更小。 取消激活local.xml中的缓存并清除var/cache确实有帮助。这些商店几乎和以前一样快,但每当我改变一个设置时,我必须清除操作码缓存的错误消失了。 – SebiF 2012-04-13 14:59:57