Cara menggunakan Nginx untuk cache fail statik berprestasi tinggi

王林
Lepaskan: 2023-08-02 16:13:11
asal
1916 orang telah melayarinya

Cara menggunakan Nginx untuk caching fail statik berprestasi tinggi

Nginx ialah pelayan web sumber terbuka ringan yang telah mendapat perhatian dan penggunaan meluas untuk prestasi tinggi dan keupayaan serentak tinggi. Selain sebagai pelayan web, Nginx juga mempunyai fungsi penting, iaitu menyediakan fungsi caching fail statik, yang dapat mengoptimumkan kelajuan akses dan prestasi laman web dengan sangat baik. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk cache fail statik berprestasi tinggi dan memberikan contoh kod yang sepadan.

  1. Konfigurasikan Nginx untuk akses fail statik
    Untuk mendayakan fungsi caching fail statik, anda perlu mengkonfigurasi Nginx untuk mengenal pasti dan mengendalikan permintaan fail statik terlebih dahulu. Biasanya, fail statik termasuk imej, fail CSS, fail JavaScript, dsb. Berikut ialah contoh konfigurasi Nginx yang mudah:
server {
    listen 80;
    server_name example.com;

    root /path/to/static/files;

    location ~* .(jpg|jpeg|png|gif|css|js)$ {
        expires 30d;
        access_log off;
    }
}
Salin selepas log masuk

Dalam konfigurasi di atas, listen menentukan port yang didengari Nginx dan server_name menentukan nama domain pelayan. root menentukan direktori akar tempat fail statik berada. Arahan lokasi menentukan corak URL yang sepadan dan parameter pemprosesan yang sepadan. Dalam konfigurasi di atas, ungkapan biasa ~* .(jpg|jpeg|png|gif|css|js)$ sepadan dengan akhiran jpg, jpeg, png, gif, css atau js Untuk fail, tamat tempoh menyatakan bahawa tempoh sah cache ialah 30 hari dan access_log off melumpuhkan pengelogan akses kepada fail statik. listen指定了Nginx监听的端口,server_name指定了服务器的域名。root指定了静态文件所在的根目录。location指令指定了匹配的URL模式,以及对应的处理参数。在上面的配置中,通过正则表达式~* .(jpg|jpeg|png|gif|css|js)$匹配了以jpg、jpeg、png、gif、css或js为后缀的文件,expires指定了缓存的有效期为30天,access_log off则禁止了对静态文件的访问日志记录。

  1. 配置Nginx进行静态文件缓存
    为了启用Nginx的静态文件缓存功能,我们可以添加一些额外的配置指令。下面是一个示例:
location ~* .(jpg|jpeg|png|gif|css|js)$ {
    expires 30d;
    access_log off;
    add_header Cache-Control "public";
    add_header Pragma public;
    etag off;
}
Salin selepas log masuk

在上述示例中,add_header指令添加了两个头部信息,分别是Cache-ControlPragma。这两个头部信息告诉客户端和其他缓存服务器在一定时间内可以使用缓存的副本。etag off禁用了Etag头部信息,因为在某些情况下,Etag可能会导致一些兼容性问题。

  1. 验证静态文件缓存是否生效
    为了验证静态文件缓存是否生效,可以使用浏览器的开发者工具或者命令行工具进行查看。在浏览器的开发者工具中,可以查看HTTP响应头部的Cache-ControlExpires字段,以及响应内容的大小。如果缓存生效,那么在第一次访问静态文件后,再次请求时会看到Cache-ControlExpires的值与上述配置一致,并且响应内容的大小会变得非常小。

另外,可以使用命令行工具如curl来查看HTTP响应头部信息。例如,可以执行以下命令来查看一个图片文件的HTTP响应头部信息:

$ curl -I example.com/path/to/image.jpg
Salin selepas log masuk

如果缓存生效,那么你会在结果中看到类似下面的行:

Cache-Control: public, max-age=2592000
Expires: Thu, 10 Aug 2023 08:16:50 GMT
Salin selepas log masuk
  1. 动态更新缓存
    有时候我们可能需要动态地更新缓存,例如当静态文件被修改后。可以通过在文件名或者路径中添加版本号来解决这个问题。例如,假设有一个CSS文件style.css,我们可以将其重命名为style.v1.css
      Konfigurasikan Nginx untuk caching fail statik
    Untuk mendayakan fungsi caching fail statik Nginx, kami boleh menambah beberapa arahan konfigurasi tambahan. Berikut ialah contoh:

    $ nginx -s reload
    Salin selepas log masuk

    Dalam contoh di atas, arahan add_header menambah dua maklumat pengepala, iaitu Cache-Control dan kod Pragma >. Kedua-dua pengepala ini memberitahu pelanggan dan pelayan caching lain bahawa salinan cache tersedia untuk tempoh masa tertentu. etag off melumpuhkan maklumat pengepala Etag, kerana dalam sesetengah kes, Etag boleh menyebabkan beberapa isu keserasian.

      Sahkan sama ada cache fail statik berkesan
      Untuk mengesahkan sama ada cache fail statik berkesan, anda boleh menggunakan alat pembangun penyemak imbas atau alatan baris arahan untuk menyemak. Dalam alatan pembangun penyemak imbas, anda boleh melihat medan Cache-Control dan Expires pengepala respons HTTP, serta saiz kandungan respons. Jika cache berkuat kuasa, selepas mengakses fail statik buat kali pertama, anda akan melihat bahawa nilai Cache-Control dan Expires adalah konsisten dengan yang di atas. konfigurasi apabila anda meminta sekali lagi, dan kandungan respons akan Saiz akan menjadi sangat kecil.

      🎜🎜Selain itu, anda boleh menggunakan alatan baris arahan seperti curl untuk melihat maklumat pengepala respons HTTP. Sebagai contoh, anda boleh melaksanakan perintah berikut untuk melihat maklumat pengepala respons HTTP bagi fail imej: 🎜rrreee🎜Jika caching berkuat kuasa, anda akan melihat baris yang serupa dengan yang berikut dalam keputusan: 🎜rrreee
        🎜Cache Kemas Kini Dinamik 🎜 Kadangkala kita mungkin perlu mengemas kini cache secara dinamik, seperti apabila fail statik diubah suai. Anda boleh menyelesaikan masalah ini dengan menambahkan nombor versi pada nama fail atau laluan. Sebagai contoh, dengan mengandaikan terdapat fail CSS style.css, kami boleh menamakan semula fail tersebut kepada style.v1.css dan mengemas kini fail konfigurasi Nginx agar sepadan dengan nama fail baharu . Dengan cara ini, setiap kali fail CSS diubah suai, anda hanya perlu mengemas kini nombor versi dalam nama fail. 🎜🎜🎜Selain itu, Nginx juga menyediakan arahan muat semula untuk memuat semula fail konfigurasi tanpa menghentikan pelayan. Sebagai contoh, anda boleh melaksanakan arahan berikut untuk memuatkan semula fail konfigurasi Nginx: 🎜rrreee🎜 Dengan cara ini, Nginx akan membaca semula fail konfigurasi dan konfigurasi yang dikemas kini akan berkuat kuasa serta-merta. 🎜🎜Ringkasan🎜Dengan menggunakan Nginx untuk caching fail statik, prestasi dan kelajuan akses tapak web boleh dipertingkatkan dengan ketara. Dalam artikel ini, kami memperkenalkan cara mengkonfigurasi Nginx untuk mendayakan akses fail statik dan fungsi caching, dan menyediakan contoh kod dan kaedah pengesahan yang sepadan. Semoga kandungan ini akan membantu anda mengoptimumkan prestasi laman web anda. 🎜

    Atas ialah kandungan terperinci Cara menggunakan Nginx untuk cache fail statik berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan