使用cdn.bootcdn.net为什么不会缓存资源?

<script data-n-head="ssr" src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.16/vue.min.js" defer></script>
<script data-n-head="ssr" src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.4/moment.min.js" defer></script>

如上所示,使用cdn.bootcdn.net资源,但是每次请求都会从cdn服务器上重新获取资源,非常耗时,白屏很差长时间,查询发现Cache-Control值是no-cache, no-store, must-revalidate导致的,需要怎么修改呢?

1.png

阅读 1.2k
2 个回答

1、换一个CDN源试试
2、
可以试试使用nginx设置缓存策略

http {
    #指定缓存放在本机的哪个地方、缓存大小和有效期7天
    proxy_cache_path /data/nginx/static_cache levels=1:2 keys_zone=static_cache:100m inactive=7d;

    server {
        # 其他配置...

        # 针对静态资源的缓存配置,缓存7天
        location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
            proxy_pass http://your-cdn-url-here;
            proxy_cache static_cache;
            proxy_cache_bypass $http_pragma;
            proxy_cache_revalidate on;
            proxy_cache_min_uses 1;
            proxy_cache_lock on;
            proxy_cache_valid 200 7d;
        }
    }
}

还可以试试把响应头替换一下:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    proxy_pass http://your-cdn-url-here;
    #max-age:强缓存300秒 no-cache:协商缓存,有变动就重新请求,没变动就用缓存
    add_header Cache-Control max-age=300或者no-cache
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏