首页 » 网站建设 » headerphpgzip技巧_nginx缓存以及gzip设备

headerphpgzip技巧_nginx缓存以及gzip设备

访客 2024-11-29 0

扫一扫用手机浏览

文章目录 [+]

可以在一定程度上,减少做事器的处理要求压力。
比如对一些图片,css或js做一些缓存,那么在每次刷新浏览器的时候,就不会重新要求了,而是从缓存里面读取。
这样就可以减轻做事器的压力。

nginx可配置的缓存又有2种:

headerphpgzip技巧_nginx缓存以及gzip设备

1)客户真个缓存(一样平常指浏览器的缓存),分为协商缓存和逼迫缓存,参考深入理解浏览器缓存,请参考深入理解浏览器缓存

headerphpgzip技巧_nginx缓存以及gzip设备
(图片来自网络侵删)

2)做事真个缓存(利用proxy-cache实现的,实现反向代理做事器缓存)

在nginx.conf加入如下规则:

server { location ~ \.(html)$ { access_log off; add_header Cache-Control max-age=no-cache; } location ~ \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ { # 同上,通配所有以.css/.js/...结尾的要求 access_log off; add_header Cache-Control max-age=360000; }}

如上缓存配置解析含义如下:

add_header Cache-Control max-age=no-cache的含义

html文件不设置逼迫缓存韶光,协商缓存,利用 Last-Modified。
no-cache 会发起来回通信来验证缓存的相应,但如果资源未发生变革,则不会下载,返回304。

add_header Cache-Control max-age=360000的含义

给上面匹配后缀的文件设置逼迫缓存,且缓存的韶光是360000秒,第一次访问的时候,从做事器要求,当除了第一次以外,再次刷新浏览器,会从浏览器缓存读取,那么逼迫缓存一样平常是从内存里面先读取,如果内存没有,再从硬盘读取。

把稳:如上只是不对反向代理的页面进行缓存设置的,但是如果是反向代理后的页面,如上设置是不生效的。
比如说我php起了一个做事,然后通过访问nginx反向代理的办法代理到另一个php做事来,上面的配置是不生效的。

办理nginx反向代理缓存不起浸染的问题

利用proxy-cache,配置如下:

server { listen 8081; server_name xxx.abc.com; location / { proxy_pass http://localhost:7878; add_header Cache-Control max-age=no-cache; }}

反向代理缓存起浸染配置步骤如下:

第一步:

须要创建一个用于存放缓存文件的文件夹。
比如我们这里利用 /data/nuget-cache。
比如利用命令:mkdir /data/nuget-cache. 创建缓存目录

第二步:

须要在nginx.conf的http设置部分添加 proxy_cache_path的设置,如下:

http { // ..... 其他的配置 proxy_cache_path /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h; server { listen 8081; server_name xxx.abc.com; location / { proxy_pass http://localhost:7878; add_header Cache-Control max-age=no-cache; } }}

proxy_cache_path各个配置值的含义解析如下:

proxy_cache_path:指缓存的目录,目录为:/data/nuget-cache。

levels=1:2表示采取2级目录构造;

keys_zone指的是缓存空间名称,叫nuget-cache。
缓存内存的空间为20M。

max_size指的是缓存文件可以占用的最大空间为50G.

inactive=168h;默认过期韶光为168个小时,为7天,也可以写成:inactive=7d;

第三步:

我们还须要在server设置部分添加 proxy_cache 与 proxy_cache_valid的设置。
如下代码:

http { // ..... 其他的配置 proxy_cache_path /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h; server { listen 8081; server_name xxx.abc.com; location / { proxy_pass http://localhost:7878; add_header Cache-Control max-age=no-cache; proxy_cache nuget-cache; proxy_cache_valid 168h; } }}

proxy_cache设置的是 proxy_cache_path中的keys_zone的值。

proxy_cache_valid:设置的是缓存过期韶光,比如设置168个小时过期。

第四步(末了一步):

须要在server中再加上如下代码:

proxy_ignore_headers Set-Cookie Cache-Control;proxy_hide_header Cache-Control;proxy_hide_header Set-Cookie;

proxy_ignore_headers的含义是:忽略Cache-Control的要求头掌握,依然进行缓存,

比如对要求头设置cookie后,默认是不缓存的,须要我们增加忽略配置。

反向代理缓存完全配置

http { // ..... 其他的配置 proxy_cache_path /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h; server { listen 8081; server_name xxx.abc.com; location / { proxy_pass http://localhost:7878; add_header Cache-Control max-age=no-cache; proxy_cache nuget-cache; proxy_cache_valid 168h; proxy_ignore_headers Set-Cookie Cache-Control; proxy_hide_header Cache-Control; proxy_hide_header Set-Cookie; } }}nginx开启gzip

开启gzip配置是在http层加的。
基本配置代码如下:

# 开启gzipgzip on;# 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩gzip_min_length 1k;# gzip 压缩级别 1-10 gzip_comp_level 2;# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;# 是否在http header中添加Vary: Accept-Encoding,建议开启gzip_vary on;

php7进阶到架构师干系阅读

https://www.kancloud.cn/gofor/gofor

末了,欢迎大家留言补充,谈论~~~
标签:

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读0 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读0 评论0