Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Konfigurasi muat semula cache proksi terbalik Nginx dan kemas kini sumber statik tapak web dalam masa nyata

Konfigurasi muat semula cache proksi terbalik Nginx dan kemas kini sumber statik tapak web dalam masa nyata

王林
王林asal
2023-07-04 16:00:123384semak imbas

Konfigurasi muat semula cache proksi terbalik Nginx, kemas kini masa nyata sumber statik laman web

Pengenalan:
Dalam pembangunan web, sumber statik merupakan bahagian yang amat diperlukan dalam tapak web. Walau bagaimanapun, sumber statik yang kerap dikemas kini boleh menyebabkan pengguna melihat versi lama semasa akses atau dimuatkan dengan perlahan. Cara yang berkesan untuk menyelesaikan masalah ini ialah menggunakan fungsi caching proksi terbalik Nginx dan mengkonfigurasinya untuk mengemas kini sumber statik tapak web dalam masa nyata. Artikel ini akan memperkenalkan cara untuk mencapai fungsi ini melalui konfigurasi Nginx.

  1. Dayakan cache proksi terbalik:
    Pertama, kita perlu mendayakan cache proksi terbalik dalam konfigurasi Nginx. Cari fail konfigurasi Nginx (biasanya nginx.conf) dan bukanya, kemudian cari bahagian http dan tambah konfigurasi berikut:

    http {
      proxy_cache_path /path/to/cache/directory levels=1:2 keys_zone=cache_zone:10m max_size=10g inactive=60m;
      proxy_temp_path /path/to/temporary/directory;
      proxy_cache_key "$scheme$request_method$host$request_uri";
      proxy_ignore_headers "Cache-Control" "Expires";
      proxy_cache_valid any 10m;
      proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
      
      server {
     ...
     location / {
       proxy_cache cache_zone;
       proxy_pass http://backend-server;
     }
     ...
      }
    }

    Arahan:

  2. proxy_cache_path: Tetapkan laluan cache proksi terbalik dan konfigurasi berkaitan. levels ialah tahap direktori, keys_zone ialah nama dan saiz kawasan cache, max_size menetapkan saiz maksimum cache, tidak aktif Tentukan tamat masa cache. proxy_cache_path:设置反向代理缓存路径以及相关配置。levels是目录层级,keys_zone是缓存区域的名称与大小,max_size设置缓存的最大大小,inactive指定缓存超时时间。
  3. proxy_temp_path:设置临时目录路径。
  4. proxy_cache_key:用于生成缓存key的变量,$scheme表示请求协议,$request_method表示请求方法,$host表示请求的主机名,$request_uri表示请求的URI。
  5. proxy_ignore_headers:指定需要忽略的响应头。
  6. proxy_cache_valid:设置缓存的有效时间。
  7. proxy_cache_use_stale:定义在更新缓存时允许使用陈旧缓存的情况。
  8. 实时更新静态资源:
    若要实现实时更新网站的静态资源,我们需要在后台程序或脚本中添加额外的逻辑,以在每次更新静态资源后发出刷新缓存的请求。以下是一个简单的示例:

在后台程序或脚本中,当静态资源被更新后,发出刷新缓存的HTTP请求:

import requests

def refresh_cache():
  url = "http://your-nginx-server/purge-url"
  headers = {"Host": "your-hostname"}
  response = requests.get(url, headers=headers)
  
  if response.status_code == 200:
    print("Cache refreshed successfully!")
  else:
    print("Failed to refresh cache.")

Nginx的配置文件中,配置地址路由与缓存刷新:

location ~ /purge-url {
  internal;
  proxy_cache_purge cache_zone "$scheme$request_method$host$request_uri$is_args$args";
}

说明:

  • location:配置处理刷新缓存请求的路由。
  • internal:表示该路由只能被内部请求访问,外部请求无法访问。
  • proxy_cache_purge:配置要刷新的缓存区域及相关参数。

通过以上配置,当发出带有X-Purge-Cache: 1的GET请求到http://your-nginx-server/purge-url时,Nginx会根据请求的URI刷新对应的缓存。

  1. 验证:
    为了验证配置的正确性,可以使用浏览器、Postman或类似的工具来发出带有X-Purge-Cache: 1
  2. proxy_temp_path: Tetapkan laluan direktori sementara.

proxy_cache_key: Pembolehubah digunakan untuk menjana kunci cache, $scheme mewakili protokol permintaan, $request_method mewakili kaedah permintaan, $host mewakili nama hos yang diminta dan $request_uri mewakili URI yang diminta.

proxy_ignore_headers: Tentukan pengepala respons yang perlu diabaikan. 🎜🎜proxy_cache_valid: Tetapkan masa kesahihan cache. 🎜🎜proxy_cache_use_stale: Mentakrifkan keadaan di mana cache basi dibenarkan untuk digunakan semasa mengemas kini cache. 🎜🎜Kemas kini sumber statik dalam masa nyata: 🎜Untuk mencapai pengemaskinian masa nyata sumber statik tapak web, kami perlu menambah logik tambahan dalam program latar belakang atau skrip untuk mengeluarkan permintaan untuk memuat semula cache selepas setiap kemas kini statik sumber. Berikut ialah contoh mudah: 🎜🎜🎜Dalam program atau skrip latar belakang, apabila sumber statik dikemas kini, keluarkan permintaan HTTP untuk memuat semula cache: 🎜rrreee🎜Dalam fail konfigurasi Nginx, konfigurasikan penghalaan alamat dan muat semula cache: 🎜 rrreee🎜 Penerangan: 🎜
    🎜lokasi: Konfigurasikan laluan yang mengendalikan permintaan cache muat semula. 🎜🎜dalaman: Menunjukkan bahawa laluan hanya boleh diakses oleh permintaan dalaman dan tidak boleh diakses oleh permintaan luaran. 🎜🎜proxy_cache_purge: Konfigurasikan kawasan cache untuk dimuat semula dan parameter yang berkaitan. 🎜
🎜Dengan konfigurasi di atas, apabila mengeluarkan permintaan GET dengan X-Purge-Cache: 1 kepada http://your-nginx-server/purge-url code>, Nginx akan menyegarkan cache yang sepadan mengikut URI yang diminta. 🎜<ol start="3">🎜Pengesahan: 🎜Untuk mengesahkan ketepatan konfigurasi, anda boleh menggunakan penyemak imbas, Posmen atau alat yang serupa untuk mengeluarkan GET dengan <code>X-Purge-Cache: 1 bertanya. Jika cache berjaya dimuat semula, apabila mengakses sumber statik yang sepadan sekali lagi, versi terkini akan diperoleh daripada pelayan bahagian belakang dan cache akan dikemas kini untuk memastikan pengguna melihat sumber statik terkini. 🎜🎜🎜Kesimpulan: 🎜Melalui konfigurasi cache proksi terbalik Nginx dan kaedah menyegarkan sumber statik dalam masa nyata, kami boleh meningkatkan prestasi dan kelajuan akses tapak web, dan memastikan pengguna boleh mendapatkan sumber statik terkini dalam masa nyata. Ini amat penting untuk tapak web yang kerap dikemas kini. Ia juga boleh mengurangkan tekanan pada pelayan bahagian belakang dan meningkatkan kestabilan dan kebolehpercayaan tapak web. Saya harap pengenalan ini akan membantu anda! 🎜

Atas ialah kandungan terperinci Konfigurasi muat semula cache proksi terbalik Nginx dan kemas kini sumber statik tapak web dalam masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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