微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

缓存 – 提供静态内容NGINX

我是NGINX的新手.我还不太了解它,但我正在努力.
我很好奇使用Nginx从我的页面提供静态内容的最佳方式是什么.我想要提供静态内容的主要原因是我希望减少我的应用程序服务器上的负载,并增加页面加载速度.

我碰到

一些好文章,帮我把这些文章放在一起:here,here,herehere.

但一切都还是有点清楚.

组态

文件路径:etc / Nginx / default

server {

    listen 80 default_server;
    server_name default;
    root /home/forge/site/public;

    location / {
        proxy_pass http://43.35.49.160/;
        try_files $uri $uri/ /index.PHP?$query_string;
    }

    # Media: images, icons, video, audio, HTC
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)${
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
    }

    # CSS and Javascript
    location ~* \.(?:css|js)${
        expires 1y;
        access_log off;
        add_header Cache-Control "public";
    }
}

测试结果

保存我的文件后,我运行服务Nginx重新加载.

接下来,我尝试运行:curl -X GET -I http://45.33.69.160/index.PHP

我有

HTTP/1.1 200 OK
Server: Nginx/1.6.3
Content-Type: text/html; charset=UTF-8
transfer-encoding: chunked
Connection: keep-alive
Cache-Control: no-cache
Date: Fri, 08 May 2015 15:14:55 GMT
Set-Cookie: XSRF-TOKEN=eyJpdiI6IkhPa2kwK1wvd2kxMFV0TURzYnMwSXFnPT0iLCJ2YWx1ZSI6IkFpSFpvakNjcGp0b0RWcVViYXJcLzRHbmo3XC9qbStYc2VzYVh4ZHVwNW45UGNQMmltZEhvSys1NjhZVzZmckhzOGRBUk5IU1pGK084VDF1ZmhvVkZ4MlE9PSIsIm1hYyI6IjliMzc5NWQ4MWRiMjM1NzUxNjcyNGNmYWUzMGQyMDk3MjlkYTdhYzgxYTI0OGViOdhlMTRjZTI4MWE5MDU2MGYifQ%3D%3D; expires=Fri, 08-May-2015 17:14:55 GMT; Max-Age=7200; path=/
Set-Cookie: laravel_session=eyJpdiI6Iklhb041MkVBak0rVm5JeUZ0VVwvZ3pnPT0iLCJ2YWx1ZSI6IitRUFlzQzNmSm1FZ0NQVVFtaTJ4cG1hODlDa2NjVDgzdXBcLzRcL0ZSM1ZPOTRvRGo5QjQ1REluTUM3Vjd3cFptV3dWdHJweTY3QW5QR2lwTkZMUlNqbnc9PSIsIm1hYyI6IjIxOTZkYzM5ODE0N2E4YmQzODMxZGYzMDY3NjI4ODM1YWQxNGMxNDRlZDZmMGE1M2IwZWY2OTU4ZmVjOTIyMjkifQ%3D%3D; expires=Fri, 08-May-2015 17:14:55 GMT; Max-Age=7200; path=/; httponly

然后,我尝试运行curl -X GET -I http://45.33.69.160/css/custom.css

我有

HTTP/1.1 200 OK
Server: Nginx/1.6.3
Date: Fri, 08 May 2015 15:16:03 GMT
Content-Type: text/css
Content-Length: 2890
Last-Modified: Thu, 07 May 2015 03:02:38 GMT
Connection: keep-alive
ETag: "554ad5ce-b4a"
Accept-Ranges: bytes

为什么我看到Cache-Control:no-cache我只是设置了缓存?

现在一切都不清楚.

问题

有人可以说清楚如何:

>正确配置
>测试该配置是否有效
>看到缓存和不缓存之间的差异
>对其进行基准测试,并在页面或CLI上打印出该报告

解决方法:

缓存控制:无缓存

this answer about no-cache所述,它链接the spec,Cache-Control:no-cache应该告诉用户代理和中间缓存使用哪种缓存样式(即每次使用服务器重新验证).如果您仅使用Nginx,则适用.如果你使用它作为传递,你就像need to set proxy_ignore_headers一样

proxy_ignore_headers Cache-Control;

配置

除此之外:在NGINX reference about content caching,它说要放线

    proxy_cache_path /data/Nginx/cache keys_zone=one:10m;

在http部分,然后是

        proxy_cache one;

在服务器部分.

测试

In this SF question,它说通过配置文件添加X-Cache-Status标头来测试缓存行为

add_header X-Cache-Status $upstream_cache_status;

Its answer陈述

You can view headers with

  • the Firefox addon firebug
  • the Chrome debugging console
  • cURL (curl -I )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐