代码之家  ›  专栏  ›  技术社区  ›  Rotem jackoby

利用浏览器缓存-nginx和CDN

  •  0
  • Rotem jackoby  · 技术社区  · 6 年前

    我正在测试我的网站 pingdom : https://tools.pingdom.com/#!/dCLQGc/https://stagingreport.daytwo.com

    以及在利用浏览器缓存方面的低级别: enter image description here

    通过以下配置从nginx服务器提供的所有静态文件

    server {
       listen 80;
    
        gzip on;
        gzip_vary on;
        gzip_types    text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
    
    
        access_log  /var/log/nginx/access.log;
        error_log   /var/log/nginx/error.log;
    
        root /usr/share/nginx/html;
        index index.html index.htm;
    
        location / {
            if ($http_x_forwarded_proto = "http") {
                return 301 https://$host$request_uri;
            }
    
            try_files $uri $uri/ /index.html;
        }
    
    
    }
    

    因为我 使用google云CDN 我没有在服务器上设置任何缓存配置。

    为了获得更高的绩效分数 我应该改变nginx配置吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Digil    6 年前

    根据 caching details 下面提到,您可能需要相应地配置nginx:

    只有当 以下是正确的:

    它由后端服务或带有云CDN的后端bucket提供服务 启用。

    它是对GET请求的响应。

    其状态码为200、203、206、300、301、302、307或410。

    它有一个内容长度头或传输编码头。

    它有一个缓存控件:公共头。

    它有一个缓存控件:s-max age、缓存控件:max age或Expires 标题。

    它有一个内容长度、内容范围或传输编码头。

    其大小小于或等于最大尺寸。

    对于后端bucket,可以通过标记 对象为公共共享。

    还有一些检查会阻止响应的缓存。回应是 如果以下任何一项为真,则不缓存:

    它有一个Set Cookie头。

    它有一个不同的头,其值不是Accept,Accept Encoding, 或起源。

    它有一个缓存控件:没有存储、缓存或私有指令。

    相应的请求有一个Cache-Control:no-store指令。