深入Nginx + PHP 缓存详解

深入Nginx + PHP 缓存详解

什么是缓存

缓存是一种为了提高计算机数据访问性能的方法。缓存将计算过的结果存储起来,下一次再需要同样的数据时,直接从缓存中取出,从而节省了计算资源和时间。

Nginx缓存机制

Nginx有两种缓存机制:proxy_cache和fastcgi_cache

proxy_cache

proxy_cache是Nginx代理缓存,适用于反向代理场景下,将响应结果缓存在Nginx节点上,再次请求同一个url时,Nginx会直接从缓存中获取响应结果,而不是转发请求到Upstream Server。

proxy_cache的缓存方式有proxy_cache_path、proxy_cache_key、proxy_cache_valid等几种参数,可以根据具体需求进行配置。

以下是proxy_cache的一个简单示例:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_zone:10m;

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_cache my_zone;
        proxy_pass http://localhost:8080;
    }
}

fastcgi_cache

fastcgi_cache是Nginx FastCGI缓存,适用于PHP等FastCGI应用程序场景下。需要在nginx.conf中添加fastcgi_cache_path指令,以便Nginx能够启用FastCGI缓存。

fastcgi_cache的缓存方式有fastcgi_cache_path、fastcgi_cache_key、fastcgi_cache_valid等几种参数,可以根据具体需求进行配置。

以下是fastcgi_cache的一个简单示例:

fastcgi_cache_path  /data/nginx/cache levels=1:2 keys_zone=my_zone:10m;

server {
    listen       80;
    server_name  localhost;

    location / {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;

        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        fastcgi_cache my_zone;
        fastcgi_cache_valid 200 10s;
    }
}

PHP缓存机制

PHP中有三种缓存机制:OpCache、APC和Memcache。

OpCache

OpCache是PHP 5.5之后才引入的缓存机制,主要用于缓存已经编译好的PHP脚本,因此不需要每次运行脚本时都去编译一遍。

OpCache可以通过在php.ini中添加以下内容启用:

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0

APC

APC是PHP 5.4之前的缓存机制,用于缓存PHP脚本以及用户数据,可以提高PHP应用程序的性能。

APC可以通过在php.ini中添加以下内容启用:

[apc]
apc.enable=1
apc.shm_segments=1
apc.shm_size=128M
apc.max_file_size=1M

Memcache

Memcache是一种分布式内存对象缓存系统,用于缓存分布式环境下的数据,并提高数据访问效率。

以下是Memcache的一个简单示例:

$memcache_obj = new Memcache;
$memcache_obj->connect("192.168.1.100", 11211);
$memcache_obj->add("key1", "value1", false, 300);
$value = $memcache_obj->get("key1");

示例1:使用Nginx和PHP缓存提高网站性能

在网站的首页中使用Nginx和PHP缓存,可以大幅度提高网站的访问速度。以下是一个简单的示例:

  1. 在nginx.conf中启用fastcgi_cache,并配置fastcgi_cache_path、fastcgi_cache_key、fastcgi_cache_valid等参数;
  2. 在网站首页中使用PHP脚本,生成网站的HTML内容;
  3. 将HTML内容缓存到fastcgi缓存中,缓存时间视情况而定,可以设置为5分钟、10分钟、半小时、一小时等;
  4. 在nginx.conf中配置location,规定从fastcgi缓存中获取缓存的HTML文件。
fastcgi_cache_path  /data/nginx/cache levels=1:2 keys_zone=my_zone:10m;

server {
    listen       80;
    server_name  www.example.com;

    location / {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;

        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        fastcgi_cache my_zone;
        fastcgi_cache_valid 200 5m;

        if ($request_method = GET) {
            add_header X-Cache-Status $upstream_cache_status;
        }
    }
}

示例2:使用Nginx代理缓存加速Tomcat应用程序

在Tomcat应用程序的前端使用Nginx代理缓存,可以大大减轻应用程序的服务器负担,提高访问速度。

以下是一个简单的示例:

  1. 在nginx.conf中启用proxy_cache,并配置proxy_cache_path、proxy_cache_key、proxy_cache_valid等参数;
  2. 将Tomcat应用程序部署在单独的服务器上,保证应用程序的性能;
  3. 在Nginx服务器上配置location,将所有请求转发到Tomcat服务器上,并启用proxy_cache,缓存响应结果。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_zone:10m;

server {
    listen       80;
    server_name  www.example.com;

    location / {
        proxy_cache my_zone;
        proxy_pass http://tomcat_server:8080;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid 200 5m;

        if ($request_method = GET) {
            add_header X-Cache-Status $upstream_cache_status;
        }
    }
}

以上就是“深入Nginx + PHP 缓存详解”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入Nginx + PHP 缓存详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 前后端分离,使用nginx解决跨域问题

    前端:vue.js+nodejs+webpack 后台:SpringBoot 反向代理服务器:nginx 思想:将前端代码打包,让nginx指向静态资源,nginx对后台请求进行转发。 1、将前端代码打包: npm run build 会生成一个dist文件夹。包含一个index.html文件和一个static文件夹,路径以我本地为例: /Users/xxx…

    Nginx 2023年4月11日
    00
  • windows环境下nginx的启动、停止

    Windows下Nginx的启动、停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍。1、启动: D:\nginx-1.8.1>start nginx 或 D:\nginx-1.8.1>nginx.exe 注:建议使用第一种,第二种会使你的…

    Nginx 2023年4月13日
    00
  • nginx centos 服务开机启动设置实例详解

    以下是“nginx centos 服务开机启动设置实例详解”的完整攻略,包含两条示例说明。 背景 在 CentOS 系统上部署网站时,经常会使用 Nginx 作为 Web 服务,也需要将 Nginx 设置为开机自启动,以确保网站服务可以在服务器重启后自动启动。本篇攻略将详细介绍 nginx centos 服务开机启动设置实例的过程。 步骤 第一条实例 步骤1…

    Nginx 2023年5月16日
    00
  • ldap集成nginx

    nginx版本:1.10.2 nginx安装: wget http://nginx.org/download/nginx-1.10.2.tar.gz tar zxvf nginx-1.10.2.tar.gz cd nginx-1.10.2 ./configure –prefix=/usr/local/nginx –with-http_realip_mod…

    Nginx 2023年4月10日
    00
  • Nginx如何配置Http、Https、WS、WSS的方法步骤

    一、Nginx配置HTTP的方法步骤: 1.安装Nginx服务器和相关组件。 2.修改Nginx的配置文件:/etc/nginx/nginx.conf。 3.在server块中添加以下代码: location / { proxy_pass http://your.domain.name:port_number;} 4.将your.domain.name替换成…

    Nginx 2023年5月16日
    00
  • Linux下nginx部署

    启动多个,请看:在linux系统下安装两个nginx以及启动 查看nginx包路径:http://nginx.org/download/,两种下载方式: ①在官网下载使用Xftp上传到linux上 ②在版本上选好,直接命令下载,如下:(下载nginx-1.20.1.tar.gz版本)建议到home目录执行该命令,方便找到 wget http://nginx.…

    Nginx 2023年4月10日
    00
  • Django+Nginx+uwsgi 项目部署

    一:Django+Nginx+uwsgi 项目部署 # 1 在前面的章节中我们使用 python manage.py runserver 来运行服务器。这只适用测试环境中使用。 正式发布的服务,需要一个可以稳定而持续的服务器。 python django默认启动 python3 manage.py runserver 0.0.0.0:8000这种方式调用ws…

    Nginx 2023年4月16日
    00
  • nginx ssl 卸载功能 第八章

      一 、证书自签发和给web 服务签发证书 .ssl 证书加密文件 ****************************** 建立私有CA openCA openssl 证书申请及签署步骤 1.生成证书申请请求 2.RA 效验 3.CA 签署 4. 获取证书 openssl 默认配置文件:/etc/pki/tls/openssl.cnf 1.创建所需要…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部