Perbincangan mendalam tentang mekanisme caching Nginx dan teknik penalaan prestasi
Pengenalan:
Dalam pembangunan web hari ini, prestasi tinggi dan keselarasan tinggi adalah matlamat yang kami kejar. Sebagai pelayan web berprestasi tinggi, mekanisme caching Nginx dan kemahiran penalaan prestasi adalah penting untuk meningkatkan kapasiti muat laman web. Artikel ini akan menyelidiki mekanisme caching Nginx dan teknik penalaan prestasi, dan memberikan contoh kod yang berkaitan.
1. Mekanisme caching Nginx
Mekanisme caching Nginx dilaksanakan melalui modul cache proksi. Ia boleh cache data yang diproksi secara tempatan, dan apabila permintaan yang sama datang pada masa akan datang, data akan dibaca terus dari cache tanpa perlu menghantar permintaan ke pelayan bahagian belakang. Ini boleh mengurangkan tekanan pada pelayan bahagian belakang dan meningkatkan kelajuan tindak balas tapak web.
Dayakan caching
Untuk mendayakan fungsi caching Nginx, anda perlu menambah kod berikut pada fail konfigurasi Nginx terlebih dahulu:
http { ... proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; proxy_temp_path /data/nginx/tmp; ... }
Dalam kod ini, proxy_cache_path
mentakrifkan laluan cache dan beberapa parameter yang berkaitan . Antaranya, parameter levels
mewakili tahap direktori yang dibuat dalam laluan cache, parameter keys_zone
mentakrifkan kawasan memori kongsi yang digunakan untuk menyimpan indeks cache dan metadata berkaitan, max_size
mentakrifkan saiz maksimum cache Parameter inactive
menunjukkan bahawa cache yang tidak diakses untuk tempoh masa tertentu akan dianggap tamat tempoh use_temp_path Parameter
menentukan sama ada Letakkan fail cache dalam laluan sementara. proxy_cache_path
定义了缓存的路径和一些相关的参数。其中,levels
参数表示在缓存路径中创建的目录层级,keys_zone
参数定义了一个共享内存区域,用于存储缓存的索引和相关元数据,max_size
参数定义了缓存的最大大小,inactive
参数表示超过一定时间没有被访问的缓存将被认为是过期的,use_temp_path
参数指定是否将缓存文件放在临时路径中。
配置缓存规则
要指定哪些请求需要被缓存,可以在Nginx的配置文件中添加以下代码:
http { ... location / { proxy_pass http://backend; proxy_cache my_cache; proxy_cache_valid 200 304 1h; } ... }
在这段代码中,proxy_pass
指令定义了要代理到的后端服务器地址,proxy_cache
指定了使用的缓存区域,proxy_cache_valid
定义了HTTP状态码200和304被缓存的时间。
刷新和清理缓存
为了保证数据的实时性和准确性,我们有时需要手动刷新或清理缓存。可以在Nginx的配置文件中添加以下代码:
http { ... location /flush_cache { internal; proxy_cache_purge my_cache "$scheme$request_method$host$request_uri"; return 200 "Cache flushed successfully"; } ... }
在这段代码中,location
指定了刷新缓存的URL,internal
指令限制了该请求只能被Nginx内部调用,proxy_cache_purge
指令用于清理缓存。
二、Nginx的性能调优技巧
除了缓存机制之外,我们还可以通过一些性能调优的技巧来进一步提升Nginx的性能。
提高Worker进程的并发连接数
Nginx默认配置的Worker进程数较少,可以通过修改配置文件来提高Worker进程的数量,从而提高并发连接数:
worker_processes auto; events { worker_connections 4096; }
在这段代码中,worker_processes
指定了Worker进程的数量,events
部分则指定了每个Worker进程的最大并发连接数。
配置TCP连接和超时参数
合理配置TCP连接和超时参数可以提高Nginx的性能:
http { ... keepalive_timeout 65; keepalive_requests 100; send_timeout 2m; client_header_timeout 1m; ... }
在这段代码中,keepalive_timeout
定义了一个客户端连接在没有任何请求的情况下保持活跃的最大时间,keepalive_requests
定义了一个客户端连接请求的最大次数,send_timeout
定义了向客户端发送响应的最长时间,client_header_timeout
定义了接收客户端请求头的最长时间。
启用Gzip压缩
启用Gzip压缩可以减小传输的数据量,提高页面加载速度:
http { ... gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json; ... }
在这段代码中,gzip
指令启用了Gzip压缩,gzip_disable
指定了不压缩msie6
浏览器的请求,gzip_types
Untuk menentukan permintaan yang perlu dicache, anda boleh menambah kod berikut pada fail konfigurasi Nginx:
rrreee
proxy_pass
mentakrifkan proksi kepada Alamat pelayan bahagian belakang, proxy_cache
menentukan kawasan cache yang digunakan dan proxy_cache_valid
mentakrifkan masa apabila kod status HTTP 200 dan 304 dicache. 🎜🎜🎜🎜Segarkan dan kosongkan cache🎜Untuk memastikan masa nyata dan ketepatan data, kadangkala kami perlu memuat semula atau mengosongkan cache secara manual. Anda boleh menambah kod berikut pada fail konfigurasi Nginx: 🎜rrreee🎜Dalam kod ini, lokasi
menentukan URL untuk memuat semula cache dan arahan dalaman
mengehadkan permintaan kepada Dipanggil secara dalaman oleh Nginx, arahan proxy_cache_purge
digunakan untuk membersihkan cache. 🎜🎜🎜🎜2. Teknik penalaan prestasi Nginx🎜Selain mekanisme caching, kami juga boleh menggunakan beberapa teknik penalaan prestasi untuk meningkatkan lagi prestasi Nginx. 🎜🎜🎜🎜Tingkatkan bilangan sambungan serentak proses Pekerja🎜Nginx mempunyai bilangan proses Pekerja yang lebih kecil yang dikonfigurasikan secara lalai Anda boleh menambah bilangan proses Pekerja dengan mengubah suai fail konfigurasi untuk menambah bilangan sambungan serentak: 🎜rreee. 🎜Dalam kod ini, worker_processes menentukan bilangan proses Worker dan bahagian events
menentukan bilangan maksimum sambungan serentak untuk setiap proses Worker. 🎜🎜🎜🎜Konfigurasikan sambungan TCP dan parameter tamat masa 🎜 Konfigurasi sambungan TCP dan parameter tamat masa dengan betul boleh meningkatkan prestasi Nginx: 🎜rrreee🎜 Dalam kod ini, keepalive_timeout
mentakrifkan sambungan pelanggan tanpa sebarang Masa maksimum untuk kekal aktif dalam kes permintaan, keepalive_requests
mentakrifkan bilangan maksimum permintaan sambungan klien, send_timeout
mentakrifkan masa maksimum untuk menghantar respons kepada klien, client_header_timeout mentakrifkan masa maksimum untuk menerima pengepala permintaan pelanggan. 🎜🎜🎜🎜Dayakan pemampatan Gzip🎜Mendayakan pemampatan Gzip boleh mengurangkan jumlah data yang dipindahkan dan meningkatkan kelajuan pemuatan halaman: 🎜rrreee🎜Dalam kod ini, arahan gzip
membolehkan pemampatan Gzip, gzip /code> menyatakan bahawa permintaan penyemak imbas <code>msie6
tidak dimampatkan dan gzip_types
menentukan jenis MIME yang memerlukan pemampatan Gzip. 🎜🎜🎜🎜Kesimpulan: 🎜Dengan meneroka secara mendalam mekanisme caching Nginx dan teknik penalaan prestasi, kami dapat memahami dan menggunakan Nginx dengan lebih baik, serta meningkatkan kapasiti muat tapak web dan pengalaman pengguna dengan lebih berkesan. Dengan mengkonfigurasi mekanisme caching dan parameter prestasi dengan betul, dan penalaan berdasarkan keadaan sebenar, kami boleh mencapai hasil yang lebih baik dalam pembangunan web berprestasi tinggi dan berkonkurensi tinggi. Saya harap artikel ini dapat memberi manfaat kepada pembaca. 🎜Atas ialah kandungan terperinci Perbincangan mendalam tentang mekanisme caching Nginx dan teknik penalaan prestasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!