ホームページ バックエンド開発 PHPチュートリアル PHP_PHP チュートリアルで一般的に使用されるキャッシュ テクノロジの概要

PHP_PHP チュートリアルで一般的に使用されるキャッシュ テクノロジの概要

Jul 13, 2016 am 10:30 AM
php キャッシュテクノロジー

1. データのキャッシュ

ここで言うデータ キャッシュとは、ページにアクセスするたびに、まず対応するキャッシュ データが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、クエリをシリアル化します。結果を取得してファイルに保存すると、今後は同じクエリ結果がキャッシュ テーブルまたはファイルから直接取得されます。

最も広く使用されている例は、結果 ID をテーブルにキャッシュし、次回同じキーワードを検索するときに最初にキャッシュ テーブルを検索する Discuz の検索機能です。

一般的な方法では、複数のテーブルが関連付けられている場合、配列を生成し、アタッチされたテーブルの内容をメイン テーブルのフィールドに保存します。これには、1 つのテーブルのみを読み取るという利点があります。 2 つの欠点があります。データの同期にはさらに多くの手順が必要であり、データベースが常にボトルネックになります。速度を優先することが重要です。

2. ページのキャッシュ

ページにアクセスするたびに、まず対応するキャッシュされたページ ファイルが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、ページを表示し、同時にキャッシュされたページ ファイルを生成します。次回アクセスしたときにページ ファイルが有効になることを確認します。 (インターネット上のテンプレート エンジンといくつかの一般的なキャッシュ クラスには通常、この機能があります)。

3. 時間トリガーキャッシュ

ファイルが存在し、タイムスタンプが設定された有効期限よりも小さいかどうかを確認します。ファイル変更タイムスタンプが現在のタイムスタンプから有効期限タイムスタンプを引いた値より大きい場合は、キャッシュを使用し、それ以外の場合はキャッシュを更新します。

4. コンテンツトリガーのキャッシュ

データが挿入または更新されるときにキャッシュを強制的に更新します。

5. 静的キャッシュ

ここで言う静的キャッシュとは、HTMLやXMLなどのテキストファイルを静的に直接生成し、更新の際に再生成するものを指します。あまり変更のないページに適していますので、ここでは説明しません。

上記のコンテンツはコードレベルのソリューションであり、他のフレームワークを直接 CP するものであり、変更するのが面倒です。内容は似ており、簡単に実行でき、いくつかの方法で併用できます。ただし、次のコンテンツはサーバーです。コードレベルでは、複数の関係者の協力が必要です。

6. メモリ キャッシング

Memcached は、データベースの負荷を軽減し、動的アプリケーションでのアクセス速度を向上させるために使用される、高性能の分散メモリ オブジェクト キャッシング システムです。
Memcached の例は次のとおりです:

コードをコピーします コードは次のとおりです:
$memcache = new Memcache;
$memcache->connect('localhost', 11211 ) または die ( "接続できませんでした");
$version = $memcache->getVersion();
echo "サーバーのバージョン: ".$version."n";
$tmp_object = new stdClass;
$tmp_object- >str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 10) or die ("サーバーでのデータの保存に失敗しました") ;
echo " データをキャッシュに保存します (データは 10 秒で期限切れになります)n";
$get_result = $memcache->get('key');
echo "キャッシュからのデータ:n";
var_dump( $get_result);
ライブラリの読み取り例:

コードをコピーします

コードは次のとおりです:$sql = 'SELECT * FROM users';
$key = md5($sql); //memcached オブジェクト識別 Symbol
if ( !($datas = $mc->get($key)) ) {
// memcached でキャッシュされたデータが取得できない場合は、データベース クエリを使用してレコード セットを取得します。
echo "n".str_pad('MySQL からデータを読み取ります。', 60, '_')."n";
$conn = mysql_connect('localhost', 'test', 'test');
mysql_select_db(' test');
$result = mysql_query($sql);
while ($row = mysql_fetch_object($result))
$datas[] = $row;
// データベースから取得した結果セットのデータを memcached に保存します次回の訪問のために。
$mc->add($key, $datas);
} else {
echo "n".str_pad('memcached からデータを読み取ります。', 60, '_')."n";
}
var_dump ($datas);



7. PHP バッファーとアクセラレータ

eaccelerator、apc、phpa、xcache などがありますが、これらについてはあまり話さないで、そのようなものがあることを知っていれば大丈夫です。

8. MYSQL キャッシュ

これは非コード レベルとも考えられます。以下の実行時間 (0.09xxx など) を見てください。 青いやつ、2G MYISAM の時計をベースに my.ini の変更部分を投稿します。 1年近く交換したそうです。


コードをコピーします

コードは次のとおりです:

[クライアント]

default-character-set=gbk
default-storage-engine=MYISAM
max_connections=600
max_connect_errors=500
back_log=200
interactive_timeout=7200
query_cache_size=64M

テーブルキャッシュ= 512

myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=128M
key_buffer_size=1024M
read_buffer_size=512M

thread_concurrency=8

9. リバースプロキシに基づく Web キャッシュ

Nginx、SQUID、mod_proxyなど(apache2以降はmod_proxyとmod_cacheに分かれています)
NGINXの例:

コードをコピー コードは以下の通りです:


#userEveryone;
worker_processes 4;
error_log logs/error.log crit;
pid logs/nginx.pid;
worker_rlimit_nofile 10240;
events {
use epoll;
worker_connections 51200 ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
tcp_nolay on;
# サーバープール
アップストリーム bspfrontsvr {
server 10.10.10.224:80 Weight=1;
サーバー 10.10.10.221:80 重み = 1;
}
アップストリーム bspimgsvr {
サーバー 10.10.10.201:80 重み = 1;
}
アップストリーム bspstylesvr {
サーバー 10.10.10.202:80 重み = 1;
}
アップストリーム bsphelpsvr {
サーバー 10.10.10.204:80 重み = 1;
}
アップストリーム bspwsisvr {
サーバー 10.10.10.203:80 重み = 1;
}
アップストリーム bspadminsvr {
サーバー 10.10.10.222:80 重み = 1;
}
アップストリーム b spbuyersvr {Server 10.10.10.223:80 Weight = 1; bspregistersvr {
server 10.10.10.220:80weight=1;
}
log_format test_com '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" ';
#------------------------------------------------ -------------------
#img.test.com
server {
listen 10.10.10.230:80;
server_name img.test.com;
location / {
proxy_pass http://bspimgsvr;
include proxy_setting.conf;
}
access_log logs/img.log test_com;
}
#style.test.com
server {
listen 10.10.10.230:80;
server_name style.test. com;
location / {
proxy_pass http://bspstylesvr;
include proxy_setting.conf;
}
access_log logs/style.log test_com;
}
#help.test.com
server {
listen 10.10.10.230:80 ;
server_name help.test.com;
location / {
proxy_pass http://bsphelpsvr;
include proxy_setting.conf;
}
access_log logs/help.log test_com;
}
#admin.test.com
server {
listen 10.10.10.230:80;
server_name admin.test.com;
location / {
proxy_pass http://bspadminsvr;
include proxy_setting.conf;
}
access_log logs/admin.log test_com;
}
#buyer .test.com
server {
listen 10.10.10.230:80;
server_name buyer.test.com;
location / {
proxy_pass http://bspbuyersvr;
include proxy_setting.conf;
}
access_log logs/buyer.log test_com;
}
#seller.test.com
server {
listen 10.10.10.230:80;
server_name sell.test.com;
location / {
proxy_pass http://bspsellersvr;
include proxy_setting.conf;
}
access_log logs/seller.log test_com;
}
#wsi.test.com
server {
listen 10.10.10.230:80;
server_name wsi.test.com;
location / {
proxy_pass http://bspwsisvr;
include proxy_setting.conf;
}
access_log logs/wsi.log test_com;
}
#www.test.com
server {
listen 10.10.10.230:80;
server_name www.test.com *.test.com;
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
location / {
proxy_pass http://bspfrontsvr;
include proxy_setting.conf;
}
access_log logs/www.log test_com;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#login.test.com
server {
listen 10.10.10.230:443;
server_namelogin.test.com;
ssl on;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW: +SSLv2 :+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://bsploginsvr;
include proxy_setting.conf;
}
access_log logs/login.log test_com;
}
#login.test.com for register
server {
listen 10.10.10.230:80;
server_namelogin.test.com;
location / {
proxy_pass http://bspregistersvr;
include proxy_setting.conf;
}
access_log logs/register.log test_com;
}
}

proxy_redirect off;
proxy_set_header ホスト $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
cli ent_body_buffer_size 128k;
proxy_connect_timeout 90 ;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;




apache mod_proxy の例:



复制代価

代価如下:


ServerName jb51.net
ServerAdmin admin@zxsv.com
# リバースプロキシ設定
ProxyPass / http://jb51.net:8080/
ProxyPassReverse / http://jb51.net:8080 /
# キャッシュディレクトリルート
CacheRoot "/var/www/proxy"
# 最大キャッシュストレージ
CacheSize 50000000
# 時間: 4 時間ごと
CacheGcInterval 4
# 最大ページ有効期限: 時間
CacheMaxExpire 240
# 有効期限 = (現在 - last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
# デフォルトの有効期限タグ: 時間
CacheDefaultExpire 1
# コンテンツの割合が取得された後に強制的に完了: 60-90%
CacheForceCompletion 80
CustomLog /usr/local/apache/logs/jb51_ログ結合



10. DNSポーリング

BIND はオープンソースの DNS サーバー ソフトウェアです。これについては、自分で検索してみてください。

chinacache などの一部の大手 Web サイトがこれを行っていることは知っています。簡単に言うと、同じページまたはファイルが異なるサーバーにキャッシュされ、北と南に従って適切なサーバーに自動的に解析されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/765164.html技術記事 1. データキャッシュ ここで言うデータキャッシュとは、ページにアクセスするたびに、まず対応するキャッシュデータが存在するかどうかを検出し、存在しない場合は接続します...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles