我正在使用apc来管理缓存,我的目标是只将文件缓存在4个目录中:
/home/user6/public_html/beta/
/home/user6/public_html/beta/controller/
/home/user6/public_html/beta/mode/
/home/user6/public_html/beta/templates/
我试过这两个正则表达式,但似乎都没有用?
apc.filters="^(?!/home/user6/public_html/beta/(|controller/|model/|templates/)).*"
apc.filters="^(?!/home/user6/public_html/beta/).*,
"^(?!/home/user6/public_html/beta/controller/).*,
^(?!/home/user6/public_html/beta/model/).*,
^(?!/home/user6/public_html/beta/templates/).*"
我的正则表达式是错误还是其他错误?
目前网站正常工作:index.php - 然后包含控制器/模型/模板文件
仅 /home/user6/public_html/beta/index.php
显示为缓存文件,因此问题可能是apc从未看到过其他文件,因为它们被包含在内并且未被直接访问?
答案 0 :(得分:1)
由于apc.filters指定匹配意味着不进行过滤的regexp(列表),因此您正确使用否定断言。但是你的布尔逻辑中存在一个简单的缺陷,即旧的nots ands和ors。
我们采取第二个过滤规则:
/home/user6/public_html/beta/
或/home/user6/public_html/beta/controller/
或/home/user6/public_html/beta/model
或/home/user6/public_html/beta/templates
或糟糕。 .../beta/controller/x.php
匹配(3)和(4)因此不会被缓存。等
如果您只想创建一个缓存,请创建匹配过滤器并将其翻转。你也不想在beta树之外缓存任何东西,为什么不呢:
^(?!public_html/beta/(controller/|model/|templates/)?\w*\.php).
我认为你的意图是什么。