Heim Backend-Entwicklung PHP-Tutorial PHP常用的缓存技术汇总_PHP

PHP常用的缓存技术汇总_PHP

Jun 01, 2016 am 11:53 AM
php缓存技术

一、数据缓存

这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。
举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。

二、页面缓存

每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)。

三、时间触发缓存

检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。

四、内容触发缓存

当插入数据或更新数据时,强制更新缓存。

五、静态缓存

这里所说的静态缓存是指静态化,直接生成HTML或XML等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。
以上内容是代码级的解决方案,我直接CP别的框架,也懒得改,内容都差不多,很容易就做到,而且会几种方式一起用,但下面的内容是服务器端的缓存方案,非代码级的,要有多方的合作才能做到。

六、内存缓存

Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
这里说下Memcached的例子:
复制代码 代码如下:
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$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 ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)\n";
$get_result = $memcache->get('key');
echo "Data from the cache:\n";
var_dump($get_result);

读库的例子:
复制代码 代码如下:
$sql = 'SELECT * FROM users';
$key = md5($sql); //memcached 对象标识符
if ( !($datas = $mc->get($key)) ) {
// 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。
echo "n".str_pad('Read datas from 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('Read datas from memcached.', 60, '_')."n";
}
var_dump($datas);

七、PHP的缓冲器、加速器

有eaccelerator, apc, phpa,xcache,这个这个就不说了吧,搜索一堆一堆的,自己看啦,知道有这玩意就OK。

八、MYSQL缓存

这也算非代码级的,经典的数据库就是用的这种方式,看下面的运行时间,0.09xxx之类的
我贴段根据蓝色那家伙修改后部分my.ini吧,2G的MYISAM表可以在0.05S左右,据说他前后改了有快一年。

复制代码 代码如下:
[client]
……
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
……
table_cache=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

九、基于反向代理的Web缓存

如Nginx,SQUID,mod_proxy(apache2以上又分为mod_proxy和mod_cache)
NGINX的例子:
复制代码 代码如下:

#user nobody;
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_nodelay on;
# server pool
upstream bspfrontsvr {
server 10.10.10.224:80 weight=1;
server 10.10.10.221:80 weight=1;
}
upstream bspimgsvr {
server 10.10.10.201:80 weight=1;
}
upstream bspstylesvr {
server 10.10.10.202:80 weight=1;
}
upstream bsphelpsvr {
server 10.10.10.204:80 weight=1;
}
upstream bspwsisvr {
server 10.10.10.203:80 weight=1;
}
upstream bspadminsvr {
server 10.10.10.222:80 weight=1;
}
upstream bspbuyersvr {
server 10.10.10.223:80 weight=1;
}
upstream bspsellersvr {
server 10.10.10.225:80 weight=1;
}
upstream bsploginsvr {
server 10.10.10.220:443 weight=1;
}
upstream bspregistersvr {
server 10.10.10.220:80 weight=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 seller.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_name login.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_name login.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 $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;
client_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 bitsCN.com
ServerAdmin admin@zxsv.com
# reverse proxy setting
ProxyPass / http://bitsCN.com:8080/
ProxyPassReverse / http://bitsCN.com:8080/
# cache dir root
CacheRoot "/var/www/proxy"
# max cache storage
CacheSize 50000000
# hour: every 4 hour
CacheGcInterval 4
# max page expire time: hour
CacheMaxExpire 240
# Expire time = (now - last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
# defalt expire tag: hour
CacheDefaultExpire 1
# force complete after precent of content retrived: 60-90%
CacheForceCompletion 80
CustomLog /usr/local/apache/logs/jb51_net_access_log combined



十、DNS轮询

BIND是一款开放源码的DNS服务器软件,这个要说起来就大了,自己搜索去,大家知道有这个东西就行了。

我知道的有chinacache等大站就是这样做的,说简单点就是多服务器啦,把同一个页面或文件缓存到不同的服务器上,按南北自动解析到相关的服务器中。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So optimieren Sie die Website-Leistung und Ladegeschwindigkeit mit PHP So optimieren Sie die Website-Leistung und Ladegeschwindigkeit mit PHP Sep 12, 2023 am 10:13 AM

So nutzen Sie PHP zur Optimierung der Website-Leistung und Ladegeschwindigkeit Mit der rasanten Entwicklung des Internets haben die Website-Leistung und die Ladegeschwindigkeit immer mehr Aufmerksamkeit auf sich gezogen. Als weit verbreitete serverseitige Skriptsprache spielt PHP eine wichtige Rolle bei der Optimierung der Website-Leistung und Ladegeschwindigkeit. In diesem Artikel werden einige Tipps und Methoden zur Verwendung von PHP zur Verbesserung der Leistung und Ladegeschwindigkeit Ihrer Website vorgestellt. Verwendung eines Caching-Mechanismus Caching ist eine effektive Möglichkeit, die Leistung einer Website zu verbessern. PHP bietet eine Vielzahl von Caching-Mechanismen, wie z. B. Datei-Caching, Speicher-Caching und Daten-Caching.

Wie implementiert man dynamisches Daten-Caching mithilfe der Caching-Technologie in PHP? Wie implementiert man dynamisches Daten-Caching mithilfe der Caching-Technologie in PHP? Jun 21, 2023 am 08:10 AM

Mit der kontinuierlichen Weiterentwicklung von Internetanwendungen ist die Optimierung der Website-Performance zu einer der notwendigen Aufgaben bei der Website-Entwicklung geworden. Unter diesen ist der Einsatz der Caching-Technologie eine wichtige Optimierungsmethode. In der PHP-Entwicklung kann die Caching-Technologie die Leistung und Reaktionsgeschwindigkeit der Website verbessern, Vorgänge wie wiederholte Berechnungen und Datenbankabfragen effektiv vermeiden und dadurch das Zwischenspeichern dynamischer Daten erreichen. In diesem Artikel wird erläutert, wie Sie mithilfe der Caching-Technologie dynamisches Daten-Caching in PHP implementieren. Das Konzept des Caching Caching ist eine Technologie zur Verbesserung der Anwendungsleistung. In der Website-Entwicklung ist Caching ein Caching-Dienst

Analyse der Wirksamkeit der Caching-Technologie in PHP für statische Ressourcendateien Analyse der Wirksamkeit der Caching-Technologie in PHP für statische Ressourcendateien Jun 19, 2023 pm 10:49 PM

PHP ist eine serverseitige Programmiersprache, die in der Webentwicklung weit verbreitet ist. Bei der Entwicklung einer Website wirkt sich die Ladegeschwindigkeit statischer Ressourcendateien (einschließlich CSS, JS, Bilder usw.) direkt auf die Benutzererfahrung der Website aus. Daher ist die Verbesserung der Ladegeschwindigkeit statischer Ressourcendateien zu einem der Themen geworden, über die Entwickler nachdenken müssen. Eine Lösung ist die Verwendung der Caching-Technologie in PHP. In PHP wird das Caching statischer Ressourcendateien hauptsächlich in zwei Typen unterteilt: Browser-Cache und Server-Cache. Das Browser-Caching basiert auf dem lokalen Caching-Mechanismus des Browsers, um es zu reduzieren

Caching-Technologie in PHP und ihre Implementierungsmethode Caching-Technologie in PHP und ihre Implementierungsmethode Jun 23, 2023 am 11:31 AM

Da die Komplexität moderner Webanwendungen immer weiter zunimmt, sind Leistungsprobleme zu einer großen Herausforderung für Entwickler geworden. Einer der häufigsten Leistungsengpässe ist der häufige Zugriff auf die Datenbank oder das Dateisystem, der zu schwerwiegenden Leistungsproblemen führen kann. Caching-Technologie ist eine Möglichkeit, diese Probleme zu lösen. In diesem Artikel werden die Grundkenntnisse und Implementierungsmethoden zur Verwendung des Caches in PHP vorgestellt. Wir besprechen einige beliebte PHP-Caching-Techniken und wie wir sie in unsere Anwendungen integrieren können. Was ist Cache? Caching ist eine Möglichkeit für eine Anwendung

Eine Anleitung zu Caching-Techniken in PHP Eine Anleitung zu Caching-Techniken in PHP Jun 11, 2023 am 09:04 AM

PHP ist eine in der Webentwicklung weit verbreitete Skriptsprache und viele Websites werden mit PHP entwickelt. Da jedoch die Anzahl der Besuche immer weiter steigt, werden die Leistungsprobleme der Website immer deutlicher. Um die Leistung der Website zu verbessern, ist die Caching-Technologie eine sehr effektive Lösung. Dieser Artikel stellt die Caching-Technologie in PHP vor und soll den Lesern helfen, die Caching-Technologie besser zu verstehen und anzuwenden, um die Website-Leistung zu verbessern. Was ist Caching-Technologie? Caching-Technologie ist eine Technologie, die in Anwendungen verwendet wird, um die Geschwindigkeit des Datenzugriffs zu erhöhen. Es wird im Speicher oder auf der Festplatte zwischengespeichert

Der Optimierungseffekt der Caching-Technologie in PHP auf die Reaktionsgeschwindigkeit der Anwendung Der Optimierungseffekt der Caching-Technologie in PHP auf die Reaktionsgeschwindigkeit der Anwendung Jun 19, 2023 pm 10:44 PM

Angesichts der rasanten Entwicklung des Internets ist die Frage, wie Anwendungen in kürzerer Zeit auf Benutzeranfragen reagieren können, ein Problem, das ständig optimiert wird. Die Caching-Technologie ist eine der gängigen Optimierungsmethoden. Dieser Artikel konzentriert sich auf den Optimierungseffekt der Caching-Technologie in PHP auf die Reaktionsgeschwindigkeit von Anwendungen. Das Grundkonzept des Caching bezieht sich auf das vorübergehende Speichern von Ausführungsergebnissen im Speicher oder auf der Festplatte während der Ausführung einer Anwendung. Wenn die gleiche Anfrage das nächste Mal eintrifft, können die berechneten Ergebnisse direkt aus dem Speicher oder der Festplatte gelesen werden, ohne dass dieselbe Anfrage erneut ausgeführt werden muss.

Verbesserung der PHP-Leistung: Nutzung der Caching-Technologie Verbesserung der PHP-Leistung: Nutzung der Caching-Technologie Jun 30, 2023 pm 10:18 PM

Wie kann man die Caching-Technologie von PHP nutzen, um die Leistung zu verbessern? Mit der rasanten Entwicklung des Internets wird die Leistung einer Website immer wichtiger für das Benutzererlebnis und das SEO-Ranking. Als häufig verwendete serverseitige Skriptsprache spielt die Leistung von PHP eine entscheidende Rolle für die Reaktionsgeschwindigkeit der Website. Die Caching-Technologie von PHP ist ein wichtiges Mittel zur Verbesserung der Leistung. 1. Warum Caching-Technologie verwenden? Bevor wir verstehen, wie die Caching-Technologie von PHP verwendet wird, wollen wir zunächst verstehen, warum wir die Caching-Technologie verwenden müssen. In der Webentwicklung erfolgt in der Regel die Generierung einer Seite

Analyse von Anwendungsszenarien der Caching-Technologie in PHP in verschiedenen Anwendungstypen Analyse von Anwendungsszenarien der Caching-Technologie in PHP in verschiedenen Anwendungstypen Jun 19, 2023 pm 11:25 PM

PHP ist eine gängige serverseitige Skriptsprache und die Caching-Technologie ist eine effektive Möglichkeit, die Leistung zu optimieren. In diesem Artikel werden die Vorteile und Anwendungsmethoden der Verwendung der PHP-Caching-Technologie in verschiedenen Anwendungsszenarien untersucht. Webanwendungen Webanwendungen müssen beim Start eine große Anzahl von Initialisierungsvorgängen ausführen, z. B. das Laden von Konfigurationsdateien, Datenbankverbindungen usw. Diese Vorgänge verbrauchen viel Zeit und Rechenressourcen und beeinträchtigen die Leistung von Webanwendungen. Der Einsatz von Caching-Technologie kann die Anzahl der Ausführungen dieser Initialisierungsvorgänge reduzieren und die Reaktionsgeschwindigkeit von Webanwendungen beschleunigen. Bei Webanwendungen

See all articles