Rumah >Operasi dan penyelenggaraan >Nginx >Konfigurasi kemas kini cache proksi Nginx untuk bertindak balas terhadap perubahan dalam kandungan tapak web dalam masa nyata
Konfigurasi kemas kini cache proksi Nginx, respons masa nyata terhadap perubahan kandungan tapak web
Pengenalan:
Dengan peningkatan jumlah lawatan tapak web, cara untuk meningkatkan prestasi tapak web telah menjadi isu penting. Nginx ialah pelayan HTTP berprestasi tinggi dan pelayan proksi terbalik, dan caching proksi merupakan bahagian penting daripadanya. Dalam operasi dan penyelenggaraan harian, selalunya perlu untuk mengemas kini dan mengubah suai kandungan tapak web sambil mengekalkan kelajuan tindak balas apabila pengguna mengaksesnya. Artikel ini akan memperkenalkan cara mengkonfigurasi caching proksi dalam Nginx dan membolehkannya bertindak balas terhadap perubahan dalam kandungan tapak web dalam masa nyata.
Mengkonfigurasi cache proksi Nginx
Dalam fail konfigurasi Nginx, kita perlu menambah konfigurasi berikut untuk mendayakan caching proksi:
http { proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_key $scheme$host$request_uri; proxy_cache_valid 200 304 12h; proxy_cache_use_stale updating; proxy_ignore_headers Cache-Control; } } }
Dalam konfigurasi di atas, proxy_cache_path
menentukan laluan storan cache fail dan parameter yang berkaitan. levels=1:2
mewakili kedalaman laluan cache, keys_zone
ialah nama cache dan had saiz, max_size
ialah saiz maksimum bagi cache, inactive
ialah masa cache yang tidak aktif. proxy_cache_path
指定了缓存文件的存储路径和相关参数。levels=1:2
表示缓存路径的层次深度,keys_zone
为缓存名称和大小限制,max_size
为缓存的最大大小,inactive
为缓存的不活跃时间。
在server段中的location部分,proxy_pass
指定了后端服务的地址,proxy_cache
指定了使用的缓存名称,proxy_cache_key
定义了缓存的键值,proxy_cache_valid
设定了响应码为200和304的请求的有效期,proxy_cache_use_stale
指定了当更新缓存时是否使用旧的缓存内容,proxy_ignore_headers
设置了忽略的HTTP头。
使用Nginx的proxy_cache_bypass指令实时更新缓存
Nginx提供了proxy_cache_bypass
指令,可以用于实时更新缓存。我们可以在后端服务响应时,通过设置相应的HTTP头来触发缓存更新。以下是一个示例:
import requests def update_cache(url): headers = { 'X-Cache-Bypass': '1', } response = requests.get(url, headers=headers) return response.text
在上述示例代码中,通过设置X-Cache-Bypass
头为1,我们可以告诉Nginx在代理缓存中绕过缓存,从而实时获取最新的内容。
自动触发缓存更新
除了手动触发缓存更新,我们还可以通过使用定时任务或者Webhook来自动触发缓存的更新。以下是一个使用Python的Web框架Flask和Celery的示例代码:
from flask import Flask, request from celery import Celery app = Flask(__name__) celery = Celery(app.name, broker='redis://localhost:6379/0') @app.route('/update_cache', methods=['POST']) def update_cache(): url = request.form.get('url') result = celery.send_task('tasks.update_cache', args=[url]) return 'Task submitted' @celery.task def update_cache(url): headers = { 'X-Cache-Bypass': '1', } response = requests.get(url, headers=headers) return response.text if __name__ == '__main__': app.run()
上述示例中,我们使用Flask创建了一个简单的接口/update_cache
proxy_pass
menentukan alamat perkhidmatan backend, proxy_cache
menentukan nama cache yang digunakan, proxy_cache_key
Mentakrifkan nilai kunci cache, proxy_cache_valid
menetapkan tempoh sah permintaan dengan kod respons 200 dan 304, proxy_cache_use_stale
menentukan sama ada untuk menggunakan kandungan cache lama semasa mengemas kini cache , proxy_ignore_headers menetapkan pengepala HTTP yang diabaikan.
Nginx menyediakan arahan proxy_cache_bypass
, yang boleh digunakan untuk mengemas kini cache dalam masa nyata. Kami boleh mencetuskan kemas kini cache dengan menetapkan pengepala HTTP yang sepadan apabila perkhidmatan bahagian belakang bertindak balas. Berikut ialah contoh:
X-Cache-Bypass
kepada 1, kita boleh memberitahu Nginx untuk memintas cache dalam cache proksi dan dengan itu mendapatkan yang terkini kandungan dalam masa nyata. 🎜🎜🎜🎜Secara automatik mencetuskan kemas kini cache🎜Selain mencetuskan kemas kini cache secara manual, kami juga boleh mencetuskan kemas kini cache secara automatik dengan menggunakan tugas yang dijadualkan atau Webhooks. Berikut ialah kod sampel menggunakan rangka kerja web Python Flask dan Celery: 🎜rrreee🎜Dalam contoh di atas, kami menggunakan Flask untuk mencipta antara muka mudah /update_cache
untuk mencetuskan kemas kini cache melalui permintaan POST. Selepas menerima permintaan, kami menggunakan Celery untuk melaksanakan tugas kemas kini cache secara tak segerak dan mengembalikan hasil yang sepadan. 🎜🎜🎜🎜Kesimpulan: 🎜Melalui konfigurasi dan kod sampel di atas, kami boleh mengkonfigurasi cache proksi dalam Nginx dan bertindak balas terhadap perubahan dalam kandungan tapak web dalam masa nyata. Ini meningkatkan prestasi tapak sambil mendayakan kemas kini dan pengubahsuaian pantas pada kandungan tapak. 🎜🎜Sudah tentu, dalam aplikasi sebenar, faktor seperti strategi ketidaksahihan cache, ketersediaan tinggi dan keselamatan juga mungkin perlu dipertimbangkan. Semasa konfigurasi terperinci, pelarasan perlu dibuat mengikut keperluan sebenar. Saya harap artikel ini akan membantu untuk mempelajari dan memahami konfigurasi kemas kini cache proksi Nginx. 🎜Atas ialah kandungan terperinci Konfigurasi kemas kini cache proksi Nginx untuk bertindak balas terhadap perubahan dalam kandungan tapak web dalam masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!