使用nginx+tomcat实现动静分离

动态资源与静态资源的区别

微微的归纳一下css

  • 静态资源: 当用户屡次访问这个资源,资源的源代码永远不会改变的资源。
  • 动态资源:当用户屡次访问这个资源,资源的源代码可能会发送改变。

什么是动静分离

动静分离是让动态网站里的动态网页根据必定规则把不变的资源和常常变的资源区分开来,动静资源作好了拆分之后,咱们就能够根据静态资源的特色将其作缓存操做,这就是网站静态化处理的核心思路。html

为何要用动静分离

在咱们的软件开发中,有些请求是须要后台处理的(如:.jsp,.do等等),有些请求是不须要通过后台处理的(如:css、html、jpg、js等等文件),这些不须要通过后台处理的文件称为静态文件,不然动态文件。所以咱们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗。固然这是能够的,可是这样后台的请求次数就明显增多了。在咱们对资源的响应速度有要求的时候,咱们应该使用这种动静分离的策略去解决。动静分离将网站静态资源(HTML,JavaScript,css,img等文件)与后台应用分开部署,提升用户访问静态代码的速度,下降对后台应用访问。这里咱们将静态资源放到nginx中,动态资源转发到tomcat服务器中。所以,动态资源转发到tomcat服务器咱们就使用到了前面讲到的反向代理了。nginx

在nginx中的配置

###静态资源访问
    server {
      listen       80;
      server_name  static.itmayiedu.com;
      location /static/imgs {
            root D:/; #会直接匹配D:下的static/imgs目录的 D:/static/imgs
           index  index.html index.htm;
       }
    }
   ###动态资源访问
     server {
      listen       80;
      server_name  www.kingstone.com; // 去hosts文件中配置

      location / {
         proxy_pass http://127.0.0.1:8080;
         index  index.html index.htm;
       }
    }

tip

图片这种静态资源,再次访问的话,会出现304状态码。这不是一种错误,而是对客户端有缓存状况下服务端的一种响应。数据库

不明觉厉的解释:浏览器

客户端在请求一个文件的时候,发现本身缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。所以,若是请求中包含 If Modified Since,就说明已经有缓存在客户端。服务端只要判断这个时间和当前请求的文件的修改时间就能够肯定是返回 304 仍是 200 。
对于静态文件,例如:CSS、图片,服务器会自动完成 Last
Modified 和 If Modified Since 的比较,完成缓存或者更新。可是对于动态页面,就是动态产生的页面,每每没有包含 Last Modified 信息,这样浏览器、网关等都不会作缓存,也就是在每次请求的时候都完成一个 200 的请求。
所以,对于动态页面作缓存加速,首先要在 Response 的
HTTP Header 中增长 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 。虽然在返回
304 的时候已经作了一次数据库查询,可是能够避免接下来更多的数据库查询,而且没有返回页面内容而只是一个
HTTP Header,从而大大的下降带宽的消耗,对于用户的感受也是提升
相关文章
相关标签/搜索