2017-05-02 13 views
0

データベースを接続し記事を選択するphpをスピードアップするために、nginxでfastcgi_cacheを使用しています。ここでnginxでfastcgi_cacheで多くのssiを使用する

は私の流れです:

まず、私は私のインデックスに-含まSSI追加します。その後、

<\!--# include file="/templates/1-5-list.html" --> 

を、私は、HTML処理する場所のルートを追加 - nginxの-confの中に> PHPを

その後
location ~(\d*?)-(\d*?)-list.html 
{ 
    try_files $uri /articles/list.php?p1=$1&p2=$2; 
} 

、私はlist.phpためfastcgi_cache適用

# outside the server{} 
    fastcgi_cache_path /home/cache/articles levels=1 keys_zone=articles_cache:10m max_size=1024m inactive=1h; 
    fastcgi_cache_key $scheme$host$request_uri$request_method; 
# outside the server{} 

location ~/list.php$ { 
    fastcgi_cache articles_cache; 
    fastcgi_cache_valid 200 2h; 
    ... 
} 

今はすべて正常ですし、キャッシュ機能もうまくいきます。私は、インデックス内の複数のSSIがある場合

しかし、:二SSIは最初のものとまったく同じ結果を返す

<\!--# include file="/templates/1-5-list.html" --> 
<\!--# include file="/templates/2-5-list.html" --> 

を、FAIL!

私はキャッシュディレクトリ内を検索し、キャッシングに使用するKEYhttplocalhost/articlesGETであることがわかりました。つまり、この2つのSSIは同じKEYを共有しています。そして、私はこれが原因だと思う。

私の質問は、KEYが異なるようにfastcgi_cache_keyを変更するにはどうすればよいですか?私はlocation{}の中にfastcgi_cache_keyを追加しようとしましたが失敗します。

答えて

0

$request_uri nginx SSIサブリクエストは、親リクエストURIを参照します。 fastcgi_cache_key $scheme$host$uri$request_method;

の代わりに $uriを使用してください。
関連する問題