0

私は 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 によって他のファイルが表示されない可能性がありますか?

4

1 に答える 1

1

apc.filters は、一致がフィルタリングされないことを意味する正規表現 (のリスト) を指定しているため、否定的なアサーションを正しく使用しています。ただし、ブール論理には単純な欠陥があります。古い nots ands と ors です。

2 番目のフィルター規則を見てみましょう。

  • /home/user6/public_html/beta/ディレクトリに以下が含まれていない場合はキャッシュしない
  • /home/user6/public_html/beta/controller/ディレクトリに以下が含まれていない場合はキャッシュしない
  • /home/user6/public_html/beta/modelディレクトリに以下が含まれていない場合はキャッシュしない
  • /home/user6/public_html/beta/templatesディレクトリに以下が含まれていない場合はキャッシュしない

おっとっと。A.../beta/controller/x.phpは (3) と (4) に一致するため、キャッシュされません。等。

キャッシュのみを実行する場合は、一致フィルターを作成して反転させます。また、ベータ ツリーの外部に何もキャッシュしたくない場合は、次のようにします。

^(?!public_html/beta/(controller/|model/|templates/)?\w*\.php).

どちらがあなたの意図だと思います。

于 2012-07-16T07:22:48.173 に答える