web缓存之nginx缓存

 一、nginx缓存知识

        网络缓存位于客户端和 "源服务器 "之间,保存着所有可见内容的副本。当客户端请求缓存中存储的内容时,它可以直接从缓存中检索内容,而无需与服务器通信。这样,网络缓存就 "接近 "了客户端,提高了响应性能,并更有效地利用了应用服务器,使其不必为每个请求生成页面。

        在浏览器和应用服务器之间有多种 "潜在 "缓存,包括客户端浏览器缓存、中间缓存、内容交付网络(CDN)、负载均衡和服务器上的反向代理。缓存,即使只是在反向代理和负载平衡的层面上,对于提高性能也是非常有用的。

        举个例子来说明,去年我为一个加载缓慢的网站进行了性能优化。我注意到的第一件事是,主页的生成时间几乎长达一秒或更长。经过一番调试,我发现加载速度慢的原因是网页被标记为非缓存,这意味着每次请求都会动态生成。这其实没有必要,因为网页本身不需要经常更改,也不需要个性化。为了验证我的结论,我将页面标记为每五秒钟缓存一次。第一个字节到达的时间缩短到几毫秒,页面加载速度明显加快。

        除了大型内容交付网络(CDN),缓存还能提高负载平衡器、反向代理和应用服务器前端网络服务的性能。从上面的例子中可以看出,缓存内容可以更有效地利用应用服务器,因为页面生成过程无需每次重复。此外,网络缓存还可用于提高网站的可靠性。如果服务器宕机或繁忙,可以对 NGINX 进行设置,将缓存内容发送给用户,而不是向用户返回错误信息。这就意味着,如果应用服务器或数据库出现故障,网站的部分或全部功能仍能保持。

二、设置nginx缓存

nginx源站点服务器设置

缓存服务器设置

proxy_cache_path /data/nginx/cache levels=1 keys_zone=my_cache:10m max_size=10g inactive=3m use_temp_path=off;

●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache;  代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2;  代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。

location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;

        proxy_cache my_cache;      #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义
        proxy_cache_valid 200 3m;  #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为3分钟
        proxy_cache_key $request_uri; #指定缓存文件的key为请求的URI
        add_header Nginx-Cache-Status $upstream_cache_status;  #把缓存状态设置为头部信息,响应给客户端
        proxy_pass http://webservers;  #设置代理转发的后端服务器的协议和地址

    }

测试 

 

 

三、补充知识

CDN 内容分发网络
在最接近用户的网络“边缘”增加一层CDN缓存代理服务器,将源站点的内容发布CDN节点,可以使用户就近取得所需的内容,提高用户访问网站的响应速度。

CDN工作原理:将源站点(Web应用服务器)的静态网页资源缓存到CDN节点上,用户请求资源时,通过与DNS的配合,找到最靠近用户的一台CDN缓存服务器,然后把资源数据快速地分发给用户,而不需要每个用户的请求都从源站点获取,从而避免网络拥塞、缓解源站点的压力,保证用户访问资源的速度和体验。

CDN的内容是如何获取的?
1)对于热点资源,定时做缓存预热
2)如果CDN节点没有,会从上游服务器或源站点获取资源,并同步到CDN节点的缓存中    

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 和 Nginx 通常一起使用,用于构建和分发单页应用程序 (SPA)。Vue.js 是一种流行的 JavaScript 框架,用于构建用户界面。Nginx 是一种流行的 Web 服务器软件,通常用于反向代理和缓存。 要清除 Vue.js 页面的缓存,您可以使用 Nginx缓存控制功能。以下是一些步骤和配置示例,可以帮助您实现这一点: 1. 配置 Nginx 作为反向代理服务器:确保您的 Nginx 配置文件正确地指向您的 Vue.js 应用程序的静态资源。 2. 配置 Nginx缓存控制:在 Nginx 配置文件中,您可以设置适当的指令来控制缓存。例如,您可以使用 `proxy_cache_path` 指令指定一个用于缓存 Vue.js 页面的目录。接下来,您可以使用 `proxy_cache` 指令启用缓存,并使用 `proxy_cache_key` 指令生成用于缓存引用的密钥。 3. 使用合适的缓存控制指令:Nginx 提供了一些缓存控制指令,如 `proxy_cache_use_stale`、`proxy_cache_key`、`proxy_cache_revalidate` 等,这些可以帮助您控制如何处理缓存失效的情况。根据您的需求,将这些指令添加到适当的位置。 4. 设置合适的过期时间:在缓存控制指令中,您还可以设置适当的过期时间,以避免客户端长期持有过时的缓存副本。 5. 测试和调试:在配置更改后,请确保重新加载 Nginx 配置文件并测试您的应用程序以确保缓存清除功能正常工作。 请注意,清除 Vue.js 页面的缓存可能还涉及其他因素,如浏览器的缓存控制。在使用上述配置时,请确保考虑所有相关的缓存控制机制。 总的来说,Vue.js 和 Nginx 可以很好地协同工作,通过适当的配置来清除页面缓存。不过,具体的配置可能会因您的环境和需求而有所不同。建议参考 Nginx 的官方文档和相关资源,以获取更详细的信息和示例配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值