Nginx+PHPキャッシュの詳細
6526 ワード
Nginxキャッシュnginxには2つのキャッシュメカニズムがあります:fastcgi_Cacheとproxy_Cache次はこの2つのキャッシュメカニズムの違いを説明しましょうproxy_Cacheの役割はバックエンドサーバのコンテンツをキャッシュすることであり、静的および動的fastcgiを含む任意のコンテンツである可能性がある.Cacheの役割はfastcgiが生成したコンテンツをキャッシュすることであり、phpが生成した動的コンテンツproxy_であることが多い.Cacheキャッシュはnginxとバックエンドの通信回数を減少させ、伝送時間とバックエンド帯域幅fastcgi_を節約した.Cacheキャッシュはnginxとphpの通信回数を減少させ,phpとデータベースの圧力をさらに軽減した.proxy_Cacheキャッシュ設定
fastcgi_Cacheキャッシュ設定
総じてnginxのproxy_Cacheとfastcgi_Cacheのキャッシュ配置はそれほど悪くない.memcacheキャッシュmemcacheキャッシュについて議論する前に、mysqlのメモリキャッシュを理解しましょうmysqlのメモリキャッシュはmyでいいです.cnfで指定したサイズ:メモリテーブルはテンポラリテーブルとは異なり、テンポラリテーブルもメモリに格納されます.テンポラリテーブルの最大メモリはtmp_を通過する必要があります.table_size=128 M設定.データがテンポラリ・テーブルの最大値設定を調べた場合、自動的にディスク・テーブルに移行します.この場合、IO操作が必要なため、性能が大幅に低下しますが、メモリ・テーブルはできません.メモリがいっぱいになると、データがいっぱいになると、エラーが表示されます.例:create table test(id int unsigned not null auto_increment primary keystate char(10)、type char(20)、date char(30))engine=memory default charset=utf 8
メモリテーブルのプロパティ:1.メモリテーブルのテーブル定義はディスクに格納、拡張子は.frmなので、再起動は失われません.メモリテーブルのデータはメモリに格納され、再起動するとデータが失われます.メモリテーブルは固定長フォーマット4を使用する.メモリテーブルはblobまたはtext列をサポートしていません.例えばvarcharとtextフィールドはサポートされません.メモリテーブルはauto_をサポートincrement列とnull値を含む列へのインデックス6.メモリテーブルは物事7をサポートしない.メモリテーブルはテーブルロックです.頻繁に変更すると、パフォーマンスが低下する可能性があります.次にmemcacheを見てみましょう.mysqlのメモリテーブルの制限が多いです.memcacheの用途1.システムの同時能力を向上する.データベースの負担軽減注意:memcache linuxシステム32ビットは4 Gメモリのみをサポートし、memcacheの最長保存時間は30日です.
# :proxy_temp_path proxy_cache_path
proxy_temp_path /data0/proxy_temp_dir;
# Web cache_one, 200MB,1 , 30GB。
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
server
{
listen 80;
server_name www.yourdomain.com 192.168.8.42;
index index.html index.htm;
root /data0/htdocs/www;
location /
{
# 502、504、 , upstream , 。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
# HTTP
proxy_cache_valid 200 304 12h;
# 、URI、 Web Key ,Nginx Key ,
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
expires 1d;
}
# , URL http://192.168.8.42/test.txt, http://192.168.8.42/purge/test.txt URL 。
location ~ /purge(/.*)
{
# IP IP URL 。
allow 127.0.0.1;
allow 192.168.0.0/16;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
# .php、.jsp、.cgi 。
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
}
access_log off;
}
}
fastcgi_Cacheキャッシュ設定
#
fastcgi_cache_path /tt/cache levels=1:2 keys_zone=NAME:2880m inactive=2d max_size=10G;
# url
fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y";
server {
listen 8080;
server_name www.example .com;
location / {
root /www;
index index.html index.htm index.php;
}
location ~ (|.php)$ {
root /www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_cache NAME;
fastcgi_cache_valid 200 48h;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
# cookie,
fastcgi_pass_header Set-Cookie;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /httplogs/access.log access;
}
総じてnginxのproxy_Cacheとfastcgi_Cacheのキャッシュ配置はそれほど悪くない.memcacheキャッシュmemcacheキャッシュについて議論する前に、mysqlのメモリキャッシュを理解しましょうmysqlのメモリキャッシュはmyでいいです.cnfで指定したサイズ:メモリテーブルはテンポラリテーブルとは異なり、テンポラリテーブルもメモリに格納されます.テンポラリテーブルの最大メモリはtmp_を通過する必要があります.table_size=128 M設定.データがテンポラリ・テーブルの最大値設定を調べた場合、自動的にディスク・テーブルに移行します.この場合、IO操作が必要なため、性能が大幅に低下しますが、メモリ・テーブルはできません.メモリがいっぱいになると、データがいっぱいになると、エラーが表示されます.例:create table test(id int unsigned not null auto_increment primary keystate char(10)、type char(20)、date char(30))engine=memory default charset=utf 8
メモリテーブルのプロパティ:1.メモリテーブルのテーブル定義はディスクに格納、拡張子は.frmなので、再起動は失われません.メモリテーブルのデータはメモリに格納され、再起動するとデータが失われます.メモリテーブルは固定長フォーマット4を使用する.メモリテーブルはblobまたはtext列をサポートしていません.例えばvarcharとtextフィールドはサポートされません.メモリテーブルはauto_をサポートincrement列とnull値を含む列へのインデックス6.メモリテーブルは物事7をサポートしない.メモリテーブルはテーブルロックです.頻繁に変更すると、パフォーマンスが低下する可能性があります.次にmemcacheを見てみましょう.mysqlのメモリテーブルの制限が多いです.memcacheの用途1.システムの同時能力を向上する.データベースの負担軽減注意:memcache linuxシステム32ビットは4 Gメモリのみをサポートし、memcacheの最長保存時間は30日です.