• Nginx浏览器缓存


    浏览器缓存

    配置浏览器缓存可以加速静态资源的访问,浏览器对用户访问的资源进⾏存储,下次访问,不⽤再去向服务器寻求资料,直接本地显示,加速访问体验,节省⽹络资源,提⾼效率。Nginx通过 expires 指令配置缓存,可以控制 HTTP 响应中的 Expires Cache-Control的头部信息,⽤来控制页⾯缓存例如HTML ⻚⾯经常引⽤ JavaScript 以及图⽚等⽂件,这些⽂件很少被修改,可以设置浏览器对该类资源在本地缓存定期的时间。添加缓存之前响应信息

    常用的指令

    proxy_cache_path

    该指定用于设置缓存文件的存放路径

    语法

    语法proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time][max_size=size];
    默认值
    位置http

    参数 

    levels指定该缓存空间对应的目录,最多可以设置3层,每层取值为1|2
    keys_zone用来为这个缓存区设置名称和指定大小
    inactive指定缓存的数据多次时间未被访问就将被删除
    max_size设置最大缓存空间,如果缓存空间存满,默认会覆盖缓存时间最长的资源

     levels详解

    1. levels=1:2 缓存空间有两层目录,第一次是1个字母,第二次是2个字母
    2. 举例说明:
    3. itheima[key]通过MD5加密以后的值为 43c8233266edce38c2c9af0694e2107d
    4. levels=1:2 最终的存储路径为/usr/local/proxy_cache/d/07
    5. levels=2:1:2 最终的存储路径为/usr/local/proxy_cache/7d/0/21
    6. levels=2:2:2 最终的存储路径为??/usr/local/proxy_cache/7d/10/e2

     用法

    1. http{
    2. proxy_cache_path /usr/local/proxy_cache keys_zone=itcast:200m levels=1:2:1 inactive=1d max_size=20g;
    3. }

    proxy_cache

     该指令用来开启或关闭代理缓存,如果是开启则自定使用哪个缓存区来进行缓存。

    语法

    语法proxy_cache zone_name|off;
    默认值proxy_cache off;
    位置http、server、location

    参数

    zone_name指定使用缓存区的名称

    用法

    1. http {
    2. proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
    3. sever{
    4. ....
    5. location / {
    6. proxy_pass http://backend-server;
    7. proxy_cache my_cache;
    8. }
    9. }
    10. }

    proxy_cache_key

     该指令用来设置web缓存的key值,Nginx会根据key值MD5哈希存缓存。

    语法

    语法proxy_cache_key key;
    默认值proxy_cache_key $scheme$proxy_host$request_uri;
    位置http、server、location

    参数详解

    proxy_cache_key 的值为 $scheme$proxy_host$request_uri;。这意味着缓存键将由请求的协议 ($scheme)、代理主机 ($proxy_host) 和请求的 URI ($request_uri) 组成。例如,对于以下两个请求:

    • http://example.com/path/to/resource
    • https://example.com/another/path

     Nginx 将根据这两个请求的协议、主机和 URI 生成不同的缓存键,确保它们被分别缓存在缓存区域中。

    proxy_cache_valid

    该指令用来对不同返回状态码的URL设置不同的缓存时间。

    语法

    语法proxy_cache_valid [code ...] time;
    默认值
    位置http、server、location

    用法

    1. proxy_cache_valid 200 302 10m;
    2. proxy_cache_valid 404 1m;
    3. 200302的响应URL设置10分钟缓存,为404的响应URL设置1分钟缓存
    4. proxy_cache_valid any 1m;
    5. 对所有响应状态码的URL都设置1分钟缓存

    proxy_cache_min_uses

    该指令用来设置资源被访问多少次后被缓存

    语法

    语法proxy_cache_min_uses number;
    默认值proxy_cache_min_uses 1;
    位置http、server、location

    proxy_cache_methods

    该指令用户设置缓存哪些HTTP方法

    语法

    语法proxy_cache_methods GET|HEAD|POST;
    默认值proxy_cache_methods GET HEAD;
    位置http、server、location

    参数详解

    proxy_cache_methods GET HEAD; 默认缓存HTTP的GET和HEAD方法,不缓存POST方法。  

    缓存清除

    rm -rf /usr/local/proxy_cache/......

    静态资源缓存设置

    1. #user nobody;
    2. worker_processes 1;
    3. #error_log logs/error.log;
    4. #error_log logs/error.log notice;
    5. #error_log logs/error.log info;
    6. #pid logs/nginx.pid;
    7. events {
    8. worker_connections 1024;
    9. }
    10. http {
    11. include mime.types;
    12. default_type application/octet-stream;
    13. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    14. # '$status $body_bytes_sent "$http_referer" '
    15. # '"$http_user_agent" "$http_x_forwarded_for"';
    16. #access_log logs/access.log main;
    17. sendfile on;
    18. #tcp_nopush on;
    19. #keepalive_timeout 0;
    20. keepalive_timeout 65;
    21. # gzip on;
    22. server {
    23. listen 80;
    24. server_name localhost;
    25. #默认编码
    26. charset utf-8;
    27. # access_log logs/host.access.log main;
    28. location / {
    29. #定义虚拟主机的资源目录,无论win或linux都要写成正斜杠
    30. root C:/Users/zhang/Desktop/new;
    31. #定义首页文件的名字
    32. index index.html index.htm;
    33. }
    34. # . 表示匹配任意字符,* 表示匹配前面的字符 0 次或多次,\. 表示匹配字符 .,() 表示使用括号内的内容进行分组,| 表示或的关系,$ 表示匹配字符串结尾。
    35. # 配置缓存
    36. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    37. root C:/Users/zhang/Desktop/new;
    38. expires 30d;
    39. }
    40. # 配置缓存
    41. location ~ .*\.(js|css)?$ {
    42. root C:/Users/zhang/Desktop/new;
    43. expires 1h;
    44. }
    45. }
    46. }

    测试

  • 相关阅读:
    leetcode42 接雨水
    数据结构与算法(Java语言描述)
    认识广告数据分析
    lombok插件
    华为Pura 70系列,一种关于世界之美的可能
    Java测试复盘05
    MyBatis
    pycharm/vscode 配置black和isort
    vue传参跳转
    怎样去优化JAVA中的实现代码
  • 原文地址:https://blog.csdn.net/qq_63431773/article/details/133247300