php caching_PHPチュートリアルに基づいた詳細な説明
Jul 21, 2016 pm 03:10 PM
nginx缓存
nginx有两种缓存机制:fastcgi_cache和proxy_cache
下面我们来说说这两种缓存机制的区别吧
proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的
fastcgi_cache作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容
proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端带宽
fastcgi_cache缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力。
proxy_cache缓存设置
#注: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 tables=1:2keys_zone=NAME:2880m inactive=2d max_size=10G;
#キャッシュを定義します URLが異なりますリクエストfastcgi_cache_key "$ scheme $ request_method $ uri $ arg_x $ arg_y"; 48h;
fastcgi_cache_min_uses 1; _ FastCGI_CACHE_USE_STALE ERROR TIMEOUT Invalid_Header HTTP_500;
include Fastcgi.conf;
キャッシュの設定中に、-Cookie を取得できないことがわかりました。 $ 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=128M で設定する必要があります。データが一時テーブルの最大値設定をチェックすると、IO 操作が必要になるため、自動的にディスク テーブルに変換されますが、メモリ テーブルは影響を受けません。メモリがいっぱいになると、データフルエラーが表示されます。
例:
create table test
(
id int unsigned not null auto_increment Primary key
state char(10),
type char(20),
date char(30)
)engine=memory default charset=utf8
メモリテーブルの特徴:
1. メモリテーブルのテーブル定義は、拡張子.frm でディスクに保存されるため、再起動時に失われません
2. メモリテーブルのデータは、メモリが失われ、再起動するとデータが失われます
3. メモリ テーブルは固定長形式を使用します
4. メモリ テーブルは、varchar やテキスト フィールドなどの BLOB 列やテキスト列をサポートしません
5.メモリ テーブルは auto_increment 列と null 値を含むことができる列のインデックスをサポートします
7. メモリ テーブルはテーブル ロックであるため、頻繁に変更されるとパフォーマンスが低下する可能性があります
。 memcache を見てください。比較的に、mysql のメモリ テーブルにはより多くの制限があります。
memcache の目的
1. システムの同時実行能力を向上させる2. データベースの負荷を軽減する
注: memcache Linux システム 32 ビットは 4G メモリのみをサポートし、memcache の最大保存時間は 30 日です。 。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
