Maison développement back-end tutoriel php 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等大站就是这样做的,说简单点就是多服务器啦,把同一个页面或文件缓存到不同的服务器上,按南北自动解析到相关的服务器中。

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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines 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

Analyse de scénarios d'application de la technologie de mise en cache en PHP dans différents types d'applications Analyse de scénarios d'application de la technologie de mise en cache en PHP dans différents types d'applications Jun 19, 2023 pm 11:25 PM

PHP est un langage de script côté serveur courant et la technologie de mise en cache est un moyen efficace d'optimiser les performances. Cet article explorera les avantages et les méthodes d'application de l'utilisation de la technologie de mise en cache PHP dans différents scénarios d'application. Applications Web Les applications Web doivent effectuer un grand nombre d'opérations d'initialisation au démarrage, telles que le chargement des fichiers de configuration, les connexions aux bases de données, etc. Ces opérations consomment beaucoup de temps et de ressources informatiques et affectent les performances des applications Web. L'utilisation de la technologie de mise en cache peut réduire le nombre d'exécutions de ces opérations d'initialisation et accélérer la vitesse de réponse des applications Web. Dans les applications Web,

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.

Amélioration des performances PHP : utilisation de la technologie de mise en cache Amélioration des performances PHP : utilisation de la technologie de mise en cache Jun 30, 2023 pm 10:18 PM

Comment utiliser la technologie de mise en cache de PHP pour améliorer les performances ? Avec le développement rapide d’Internet, les performances des sites Web sont devenues de plus en plus importantes pour l’expérience utilisateur et le classement SEO. En tant que langage de script côté serveur couramment utilisé, les performances de PHP jouent un rôle essentiel dans la vitesse de réponse du site Web. La technologie de mise en cache de PHP est un moyen important d'améliorer les performances. 1. Pourquoi utiliser la technologie de mise en cache ? Avant de comprendre comment utiliser la technologie de mise en cache de PHP, comprenons d'abord pourquoi nous devons utiliser la technologie de mise en cache. En développement Web, la génération d'une page est généralement

See all articles