Rumah Operasi dan penyelenggaraan Nginx Cara menggunakan Nginx untuk kawalan cache permintaan HTTP

Cara menggunakan Nginx untuk kawalan cache permintaan HTTP

Aug 02, 2023 pm 02:01 PM
nginx permintaan http kawalan cache

如何使用Nginx进行HTTP请求的缓存控制

HTTP请求的缓存控制是一种优化网站性能的重要手段,它可以减少服务器处理请求的次数,提高网站的响应速度。Nginx作为一款高性能的Web服务器和反向代理服务器,提供了灵活的缓存控制功能,本文将介绍如何使用Nginx进行HTTP请求的缓存控制。

一、使用代理缓存

Nginx提供了代理缓存的功能,能够缓存来自上游服务器的响应结果,减少对上游服务器的请求次数。要使用代理缓存,可以在Nginx的配置文件中添加以下配置:

http {
  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

  server {
    ...
    location / {
      proxy_cache my_cache;
      proxy_cache_key $host$uri$is_args$args;
      proxy_cache_valid 200 302 10m;
      proxy_cache_valid 404 1m;
      proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
      proxy_ignore_headers Cache-Control;
      proxy_ignore_headers Set-Cookie;
      proxy_hide_header Set-Cookie;
      proxy_pass http://upstream_server;
    }
    ...
  }
}
Salin selepas log masuk

上述配置中,proxy_cache_path用于设置缓存的路径和相关参数。levels=1:2表示在缓存路径中创建1级目录和2级目录,以提高效率。keys_zone用于设置缓存区的名称和内存大小,可以根据实际需要进行调整。max_size表示缓存区的最大容量,inactive表示缓存的过期时间,即60分钟内没有被访问的缓存将被删除。use_temp_path=off表示禁用临时路径,可以提高性能。

在具体的服务器配置中,通过location指令指定需要进行缓存的URL。proxy_cache指令表示启用缓存,proxy_cache_key指令指定缓存的键值,可以使用多个变量拼接成缓存键值。proxy_cache_valid指定了不同HTTP状态码的缓存有效期,如200和302状态码的响应结果在10分钟内有效,404状态码的响应结果在1分钟内有效。proxy_cache_use_stale用于指定当上游服务器出现错误、超时或更新时,是否使用过期的缓存。proxy_ignore_headersproxy_hide_header指令可用于忽略或隐藏响应头中的某些属性。

在配置完成后,重启Nginx服务使配置生效。此时,Nginx将会对匹配的URL进行缓存,相同的URL再次被请求时,将会直接从缓存中获取响应结果,而不需要再次请求上游服务器。

二、使用浏览器缓存

除了代理缓存,还可以使用浏览器缓存来减少网络请求。Nginx可以通过设置响应头中的Cache-ControlExpires来控制浏览器缓存的行为。

示例如下:

http {
  ...
  server {
    ...
    location /static/ {
      expires max;
      add_header Cache-Control public;
    }
    ...
  }
}
Salin selepas log masuk

上述配置中,expires指令设置了max,表示将响应结果的过期时间设置为最大值,即永不过期。add_header指令为响应结果添加了Cache-Control头,并设置为public,表示允许公共缓存。

在具体的URL匹配规则中,可以根据不同的需求设置不同的缓存策略。比如,静态资源通常不会经常发生改变,可以设置expires为较长的时间,让浏览器缓存资源;而动态生成的页面可以设置为不缓存或缓存时间较短。

三、使用条件缓存

条件缓存是一种在客户端和服务器之间进行通信的机制,可以根据请求的条件决定是否使用缓存。Nginx通过设置响应头中的Last-ModifiedETag,以及请求头中的If-Modified-SinceIf-None-Match来实现条件缓存。

示例如下:

http {
  ...
  server {
    ...
    location / {
      if_modified_since before;
      add_header ETag "123456";
      if_none_match $http_if_none_match;
      if_modified_since off;
      ...
    }
    ...
  }
}
Salin selepas log masuk

上述配置中,if_modified_since指令用于判断请求头中的If-Modified-Since是否早于服务器设置的Last-Modifiedadd_header指令添加了ETag头,用于标识资源的唯一性;if_none_match指令用于判断请求头中的If-None-Match是否与服务器设置的ETag相匹配;if_modified_sinceif_none_match指令分别对应了If-Modified-SinceIf-None-Match请求头的值。

通过配置条件缓存,可以在客户端发送请求时,根据服务器返回的Last-ModifiedETag判断是否使用缓存。如果资源没有发生变化,服务器可以返回304 Not Modified,客户端从缓存中获取资源;如果资源已经发生变化,服务器返回新的资源。

四、缓存策略

为了更好地控制缓存的行为,可以根据不同的URL设置不同的缓存策略。通常,静态资源的URL具有稳定的特点,可以设置较长时间的缓存失效期;而动态页面的URL可能会频繁变动,可以设置较短的缓存失效期。

示例如下:

http {
  ...
  server {
    ...
    location /static/ {
      expires 7d;
      add_header Cache-Control public;
    }

    location /dynamic/ {
      expires 1h;
      add_header Cache-Control no-cache;
    }
    ...
  }
}
Salin selepas log masuk

上述配置中,以/static/开头的URL匹配静态资源,设置了过期时间为7天,允许公共缓存;以/dynamic/开头的URL匹配动态资源,设置了过期时间为1小时,并禁止缓存。

通过合理的缓存策略,可以在提高网站性能的同时,确保用户获取到最新的资源。

总结

Menggunakan Nginx untuk kawalan cache permintaan HTTP adalah cara yang berkesan untuk mengoptimumkan prestasi tapak web. Melalui caching proksi, caching penyemak imbas dan caching bersyarat, bilangan permintaan kepada pelayan dapat dikurangkan dan kelajuan tindak balas laman web dapat dipertingkatkan. Dalam strategi caching khusus, tempoh tamat tempoh cache yang berbeza perlu ditetapkan mengikut URL yang berbeza untuk memberikan pengalaman pengguna yang lebih baik.

Rujukan: https://nginx.org/

Atas ialah kandungan terperinci Cara menggunakan Nginx untuk kawalan cache permintaan HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mengkonfigurasi nama domain pelayan awan di nginx Cara mengkonfigurasi nama domain pelayan awan di nginx Apr 14, 2025 pm 12:18 PM

Cara mengkonfigurasi nama domain Nginx pada pelayan awan: Buat rekod yang menunjuk ke alamat IP awam pelayan awan. Tambah blok hos maya dalam fail konfigurasi Nginx, menyatakan port pendengaran, nama domain, dan direktori akar laman web. Mulakan semula nginx untuk memohon perubahan. Akses konfigurasi ujian nama domain. Nota Lain: Pasang sijil SSL untuk membolehkan HTTPS, pastikan firewall membenarkan trafik port 80, dan tunggu resolusi DNS berkuatkuasa.

Cara memeriksa nama bekas Docker Cara memeriksa nama bekas Docker Apr 15, 2025 pm 12:21 PM

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 14, 2025 pm 01:03 PM

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Cara memeriksa versi nginx Cara memeriksa versi nginx Apr 14, 2025 am 11:57 AM

Kaedah yang boleh menanyakan versi nginx adalah: gunakan perintah nginx -v; Lihat arahan versi dalam fail nginx.conf; Buka halaman ralat Nginx dan lihat tajuk halaman.

Cara Mengkonfigurasi Nginx di Windows Cara Mengkonfigurasi Nginx di Windows Apr 14, 2025 pm 12:57 PM

Bagaimana cara mengkonfigurasi nginx di Windows? Pasang Nginx dan buat konfigurasi hos maya. Ubah suai fail konfigurasi utama dan sertakan konfigurasi hos maya. Mulakan atau Muat semula Nginx. Uji konfigurasi dan lihat laman web. Selektif membolehkan SSL dan mengkonfigurasi sijil SSL. Selektif tetapkan firewall untuk membolehkan trafik port 80 dan 443.

Cara memulakan pelayan nginx Cara memulakan pelayan nginx Apr 14, 2025 pm 12:27 PM

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Cara Memulakan Bekas oleh Docker Cara Memulakan Bekas oleh Docker Apr 15, 2025 pm 12:27 PM

Docker Container Startup Langkah: Tarik Imej Bekas: Run "Docker Pull [Mirror Name]". Buat bekas: Gunakan "Docker Buat [Pilihan] [Nama Mirror] [Perintah dan Parameter]". Mulakan bekas: Jalankan "Docker Start [Nama Container atau ID]". Semak Status Kontena: Sahkan bahawa bekas sedang berjalan dengan "Docker PS".

Cara membuat bekas untuk Docker Cara membuat bekas untuk Docker Apr 15, 2025 pm 12:18 PM

Buat bekas di Docker: 1. Tarik Imej: Docker Pull [Nama Cermin] 2. Buat bekas: Docker Run [Options] [Mirror Name] [Command] 3. Mulailah bekas: Docker Start [Nama Container]

See all articles