Maison php教程 php手册 PHP常用的缓存技术汇总

PHP常用的缓存技术汇总

Jun 06, 2016 pm 08:22 PM
php缓存技术

这篇文章主要介绍了PHP常用的缓存技术汇总,下面所说的都是在项目中最常用的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 ;
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 ;
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 ;
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 ;
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 ;
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 ;
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 ;
include proxy_setting.conf;
}
access_log logs/wsi.log test_com;
}
#
server {
listen 10.10.10.230:80;
server_name *.test.com;
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
location / {
proxy_pass ;
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 ;
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的例子:

复制代码 代码如下:

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter la mise en cache dynamique des données via la technologie de mise en cache en PHP ? Comment implémenter la mise en cache dynamique des données via la technologie de mise en cache en PHP ? Jun 21, 2023 am 08:10 AM

Avec le développement continu des applications Internet, l’optimisation des performances d’un site Web est devenue l’une des tâches nécessaires au développement d’un site Web. Parmi eux, l’utilisation de la technologie de mise en cache constitue une méthode d’optimisation importante. Dans le développement PHP, la technologie de mise en cache peut améliorer les performances et la vitesse de réponse du site Web, éviter efficacement des opérations telles que des calculs répétés et des requêtes de base de données, et ainsi réaliser la mise en cache des données dynamiques. Cet article explique comment utiliser la technologie de mise en cache pour implémenter la mise en cache dynamique des données en PHP. Le concept de mise en cache La mise en cache est une technologie utilisée pour améliorer les performances des applications. Dans le développement de sites Web, la mise en cache est un service de mise en cache

Comment optimiser les performances d'un site Web et la vitesse de chargement avec PHP Comment optimiser les performances d'un site Web et la vitesse de chargement avec PHP Sep 12, 2023 am 10:13 AM

Comment utiliser PHP pour optimiser les performances et la vitesse de chargement d'un site Web Avec le développement rapide d'Internet, les performances des sites Web et la vitesse de chargement ont attiré de plus en plus d'attention. En tant que langage de script côté serveur largement utilisé, PHP joue un rôle important dans l’optimisation des performances et de la vitesse de chargement des sites Web. Cet article présentera quelques conseils et méthodes d'utilisation de PHP pour améliorer les performances et la vitesse de chargement de votre site Web. Utiliser un mécanisme de mise en cache La mise en cache est un moyen efficace d'améliorer les performances d'un site Web. PHP fournit une variété de mécanismes de mise en cache, tels que la mise en cache des fichiers, la mise en cache de la mémoire et la mise en cache des données.

Analyse de l'efficacité de la technologie de mise en cache en PHP pour les fichiers de ressources statiques Analyse de l'efficacité de la technologie de mise en cache en PHP pour les fichiers de ressources statiques Jun 19, 2023 pm 10:49 PM

PHP est un langage de programmation côté serveur largement utilisé dans le développement Web. Dans le processus de développement d'un site Web, la vitesse de chargement des fichiers de ressources statiques (y compris CSS, JS, images, etc.) affecte directement l'expérience utilisateur du site Web. Par conséquent, comment améliorer la vitesse de chargement des fichiers de ressources statiques est devenu l'une des questions auxquelles les développeurs doivent réfléchir. Une solution consiste à utiliser la technologie de mise en cache en PHP. En PHP, la mise en cache des fichiers de ressources statiques est principalement divisée en deux types : le cache du navigateur et le cache du serveur. La mise en cache du navigateur s'appuie sur le mécanisme de mise en cache local du navigateur pour réduire

Technologie de mise en cache en PHP et sa méthode de mise en œuvre Technologie de mise en cache en PHP et sa méthode de mise en œuvre Jun 23, 2023 am 11:31 AM

Alors que la complexité des applications Web modernes ne cesse d’augmenter, les problèmes de performances sont devenus un défi majeur pour les développeurs. L'un des goulots d'étranglement courants en matière de performances est l'accès fréquent à la base de données ou au système de fichiers, qui peut entraîner de graves problèmes de performances. La technologie de mise en cache est un moyen de résoudre ces problèmes. Cet article présentera les connaissances de base et les méthodes d'implémentation de l'utilisation du cache en PHP. Nous discuterons de certaines techniques de mise en cache PHP populaires et de la manière de les intégrer dans nos applications. Qu’est-ce que le cache ? La mise en cache est un moyen pour une application de

Stratégies et techniques de mise en cache encapsulée en PHP Stratégies et techniques de mise en cache encapsulée en PHP Oct 12, 2023 am 10:51 AM

Stratégies et technologies de mise en cache encapsulée dans PHP La mise en cache est l'un des moyens importants pour améliorer les performances des applications. Dans le développement PHP, une utilisation raisonnable du cache peut réduire le nombre de requêtes de base de données et augmenter la vitesse de lecture des données, améliorant ainsi la vitesse de réponse des applications et l'expérience utilisateur. La stratégie de mise en cache encapsulée fait référence à l'encapsulation des opérations de cache dans des blocs de code communs pour faciliter la réutilisation à plusieurs endroits et faciliter une gestion et une configuration unifiées. Ci-dessous, nous présenterons plusieurs stratégies et technologies courantes de mise en cache d’encapsulation et donnerons des exemples de code spécifiques. Cache de fichiers Le cache de fichiers est le plus

Résumé des méthodes technologiques de mise en cache PHP et des problèmes courants Résumé des méthodes technologiques de mise en cache PHP et des problèmes courants Jun 08, 2023 pm 04:40 PM

Résumé des méthodes technologiques de mise en cache PHP et des problèmes courants À mesure que le nombre de visites sur le site Web continue d'augmenter, la technologie de mise en cache est particulièrement importante afin d'améliorer la vitesse de réponse et les performances du site Web. Dans le développement PHP, la technologie de mise en cache joue également un rôle essentiel. Cet article présentera les méthodes de technologie de mise en cache PHP et les solutions aux problèmes courants. 1. Méthodes de la technologie de mise en cache PHP 1. Mise en cache des fichiers La mise en cache des fichiers fait référence à la mise en cache des données dans les fichiers, et vous pouvez lire directement les fichiers lorsque vous en avez besoin. La méthode de mise en œuvre spécifique consiste à sérialiser les données et à les stocker dans le fichier. Lors de la lecture,

Un guide des techniques de mise en cache en PHP Un guide des techniques de mise en cache en PHP Jun 11, 2023 am 09:04 AM

PHP est un langage de script largement utilisé dans le développement Web et de nombreux sites Web sont développés à l'aide de PHP. Cependant, à mesure que le nombre de visites continue d’augmenter, les problèmes de performances du site Web sont devenus de plus en plus importants. Afin d’améliorer les performances du site internet, la technologie de mise en cache est une solution très efficace. Cet article présentera la technologie de mise en cache en PHP, dans le but d'aider les lecteurs à mieux comprendre et appliquer la technologie de mise en cache pour améliorer les performances des sites Web. Qu'est-ce que la technologie de mise en cache ? La technologie de mise en cache est une technologie utilisée dans les applications pour augmenter la vitesse d'accès aux données. Il est mis en cache en mémoire ou sur disque

L'effet d'optimisation de la technologie de mise en cache en PHP sur la vitesse de réponse des applications L'effet d'optimisation de la technologie de mise en cache en PHP sur la vitesse de réponse des applications Jun 19, 2023 pm 10:44 PM

Avec le développement rapide d'Internet, comment faire en sorte que les applications répondent plus rapidement aux demandes des utilisateurs est un problème en constante optimisation. La technologie de mise en cache est l’une des méthodes d’optimisation courantes. Cet article se concentrera sur l'effet d'optimisation de la technologie de mise en cache en PHP sur la vitesse de réponse des applications. Le concept de base de la mise en cache fait référence à la sauvegarde temporaire des résultats d'exécution en mémoire ou sur disque pendant l'exécution d'une application. Lorsque la même requête arrive la prochaine fois, les résultats calculés peuvent être lus directement à partir de la mémoire ou du disque sans réexécuter la même requête.

See all articles