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 untuk bertindak balas terhadap perubahan dalam kandungan tapak web dalam masa nyata

王林
王林asal
2023-07-07 08:06:091734semak imbas

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.

  1. 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头。

  1. 使用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在代理缓存中绕过缓存,从而实时获取最新的内容。

  2. 自动触发缓存更新
    除了手动触发缓存更新,我们还可以通过使用定时任务或者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

Di bahagian lokasi segmen pelayan, 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.


    Gunakan arahan proxy_cache_bypass Nginx untuk mengemas kini cache dalam masa nyata

    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:

    rrreee🎜Dalam kod contoh di atas, dengan menetapkan pengepala 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!

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