Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk mengkonfigurasi cache kandungan Nginx dan apakah konfigurasi parameter biasa?
Senario penggunaan:
Halaman projek perlu memuatkan banyak data, yang tidak kerap berubah Ia tidak melibatkan penyesuaian diperibadikan secara dinamik untuk setiap permintaan. dan prestasinya tidak baik. Cache keputusan berdasarkan laluan permintaan dan parameter Menggunakan cache nginx akan meningkatkan kelajuan permintaan.
Asas
Anda hanya perlu mengkonfigurasi laluan_cache_proksi dan cache_proksi untuk mendayakan cache kandungan yang pertama digunakan untuk menetapkan laluan cache dan konfigurasi, dan yang terakhir digunakan untuk membolehkan caching .
http { ... proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { proxy_cache mycache; location / { proxy_pass http://localhost:8000; } } }
Perihalan parameter yang sepadan:
1 Direktori cakera tempatan yang digunakan untuk caching ialah /path/to/cache/
2. .levels menetapkan hierarki direktori dua peringkat di /path/to/cache/. Meletakkan sebilangan besar fail dalam satu direktori boleh mengakibatkan akses fail perlahan, jadi untuk kebanyakan penggunaan, kami mengesyorkan hierarki direktori dua peringkat. Jika parameter tahap tidak dikonfigurasikan, nginx akan meletakkan semua fail dalam direktori yang sama.
3.keys_zone Sediakan kawasan memori kongsi, yang digunakan untuk menyimpan kunci cache dan metadata, agak serupa dengan penggunaan pemasa. Meletakkan salinan kunci ke dalam ingatan membolehkan nginx membuat keputusan dengan cepat sama ada permintaan adalah hit atau terlepas tanpa mendapatkan semula cakera, yang sangat meningkatkan kelajuan mendapatkan semula. Ruang memori 1MB boleh menyimpan kira-kira 8,000 kekunci, jadi ruang memori 10MB yang dikonfigurasikan di atas boleh menyimpan hampir 80,000 kekunci.
4.max_size menetapkan had atas cache (10g dalam contoh di atas). Ini adalah pilihan; tidak menyatakan nilai membolehkan cache berkembang dan menggunakan semua ruang cakera yang tersedia. Apabila cache mencapai had ini, pemproses memanggil pengurus cache untuk mengalih keluar fail yang paling kurang digunakan baru-baru ini, sekali gus mengurangkan ruang cache ke bawah had ini.
5.tidak aktif menyatakan berapa lama item boleh kekal dalam ingatan tanpa diakses. Dalam contoh di atas, jika fail tidak diminta dalam masa 60 minit, pengurusan cache akan memadamkannya secara automatik daripada memori, tidak kira sama ada fail itu telah tamat tempoh. Nilai lalai parameter ini ialah 10 minit (10m). Ambil perhatian bahawa kandungan tidak aktif adalah berbeza daripada kandungan tamat tempoh. nginx tidak akan memadamkan kandungan tamat tempoh secara automatik yang ditentukan oleh pengepala kawalan cache (cache-control:max-age=120 dalam contoh ini). Kandungan tamat tempoh hanya akan dipadamkan jika ia tidak diakses dalam masa yang ditentukan oleh tidak aktif. Jika kandungan tamat tempoh diakses, nginx akan menyegarkannya daripada pelayan asal dan mengemas kini pemasa tidak aktif yang sepadan.
6.nginx pada mulanya akan meletakkan fail yang ditakdirkan untuk ditulis ke cache ke dalam kawasan storan sementara Perintah use_temp_path=off mengarahkan nginx untuk menulis fail ini ke direktori yang sama apabila menyimpannya. Kami amat mengesyorkan anda menetapkan parameter kepada off untuk mengelakkan salinan data yang tidak diperlukan dalam sistem fail. use_temp_path telah diperkenalkan dalam versi nginx1.7 dan nginx plus r6.
Akhirnya, arahan proxy_cache mula menyimpan cache kandungan yang urlnya sepadan dengan bahagian lokasi (dalam kes ini, /). Anda juga boleh menambah perintah proxy_cache pada bahagian pelayan, yang akan menggunakan caching pada semua perkhidmatan yang lokasinya tidak menyatakan perintah proxy_cache mereka sendiri.
proses berkaitan cache nginx
Terdapat dua proses nginx tambahan yang terlibat dalam cache:
pengurus cache Bermula secara berkala untuk menyemak status cache. Jika saiz cache melebihi had yang ditetapkan oleh parameter max_size dalam proxy_cache_path, pengurus cache memadamkan data yang diakses baru-baru ini. Di antara pengurus cache bermula, jumlah data cache mungkin melebihi saiz yang dikonfigurasikan secara ringkas.
pemuat cache hanya berjalan sekali, selepas nginx bermula. Ia memuatkan metadata tentang data yang dicache sebelum ini ke dalam kawasan memori yang dikongsi. Memuatkan keseluruhan cache sekali gus mungkin menggunakan sumber yang mencukupi untuk merendahkan prestasi nginx dalam beberapa minit pertama selepas permulaan. Untuk mengelakkan ini, konfigurasikan pemuatan berulang cache dengan memasukkan parameter berikut dalam arahan proxy_cache_path:
loader_threshold - tempoh lelaran dalam milisaat (default Next 200)
loader_files - Bilangan maksimum item dimuatkan semasa satu lelaran (100 secara lalai)
loader_sleeps - Kelewatan antara lelaran , dalam milisaat (50 secara lalai)
Dalam contoh berikut, lelaran berlangsung selama 300 milisaat atau sehingga 200 item dimuatkan:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
Parameter lain yang biasa digunakan
Contoh konfigurasi:
proxy_cache_path /path/to/cache 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$request_uri$cookie_user"; proxy_cache_min_uses 3; proxy_cache_methods get head post; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; # proxy_cache_valid any 5m; proxy_pass http://localhost:8000; } }
Penerangan parameter sepadan:
proxy_cache_key Untuk menukar ciri permintaan yang digunakan semasa mengira kunci, tentukan kunci yang dicache. Ini tidak disyorkan. Contohnya adalah menggunakan nama domain, URL permintaan dan kuki pengguna sebagai kunci, yang bermaksud bahawa halaman akan dicache n kali untuk pengguna yang berbeza Dalam kebanyakan kes ini operasi tidak diperlukan.
proxy_cache_min_uses ialah bilangan minimum permintaan yang mesti menggunakan kunci yang sama sebelum respons dicache.
proxy_cache_methods 为指定要被缓存的请求方式的响应值,默认为 get 和 head,新增其他的需要一起列出来,如上示例所示。
proxy_cache_valid 为响应状态码的缓存时间,示例可以为每个状态码缓存指定时间,也可以使用 any 进行全部状态码的缓存。
清除缓存
需要提前加一个配置,用于标识使用 http purge 方法的请求并删除匹配的 url 对应的缓存。
1.在 http {} 上下文中创建新变量,例如 $purge_method, 他依赖于 $request_method 变量:
http { ... map $request_method $purge_method { purge 1; default 0; } }
2.在 location {} 块中,已经配置缓存的前提下,引入 proxy_cache_purge 参数来指定清除缓存请求的条件。例如在上一步指定的 $request_method
server { listen 80; server_name www.example.com; location / { proxy_pass https://localhost:8002; proxy_cache mycache; proxy_cache_purge $purge_method; } }
配置完并使之生效之后,就可以发送一条 purge 请求来让缓存失效了,例如:
curl -x purge -d – https://www.example.com/*
在该示例中,将清除具有公共 url 部分(由星号通配符指定)的资源。但这些缓存条目不会从缓存中完全删除:它们会保留在磁盘上,直到它们被视为不活动(由proxy_cache_path 中的 inactive参数决定)的时候才完全删除,或缓存清除器(由 proxy_cache_path 中的 purge 决定),或客户端尝试访问它们的时候。
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi cache kandungan Nginx dan apakah konfigurasi parameter biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!