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

微微的概括一下

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

什么是动静分离

动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

为什么要用动静分离

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

在nginx中的配置

  ###静态资源访问server {listen       80;server_name  static.itmayiedu.com;location /static/imgs {root D:/; #会直接匹配D:下的static/imgs目录的 D:/static/imgsindex  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,从而大大的降低带宽的消耗,对于用户的感觉也是提高

转载于:https://www.cnblogs.com/kingning/p/11071073.html

使用nginx+tomcat实现动静分离相关推荐

  1. Nginx自学手册(六)Nginx+Tomcat实现动静分离

    (一)简述 Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Nginx作为代理 ...

  2. nginx+Tomcat实现动静分离架构

    最近新部署了一个项目jlj-cms-erp-web,要求使用nginx+Tomcat将静态页面和动态的请求分开处理,减轻Tomcat服务器的压力 在部署项目的这台机器上(192.168.1.110)并 ...

  3. [Nginx]nginx 配置实例-动静分离

    nginx 配置实例-动静分离 1.什么是动静分离 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可 ...

  4. Nginx+Keepalived+Tomcat之动静分离的web集群

                 为小公司提供大概一天持续在100万/日之间访问的高性能.高可用.高并发访问及动静分离的web集群方案 Nginx+Keepalived            高可用.反向代理 ...

  5. Nginx配置实例-动静分离实例:搭建静态资源服务器

    场景 Nginx入门简介和反向代理.负载均衡.动静分离理解: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 U ...

  6. Nginx(五):动静分离

    1.概念基础 Nginx动静分离简单来说就是把动态请求和静态请求分开,不能理解成只是单纯的把动态页面静态页面的物理分离.严格意义上说应该是动态请求跟静态请求的分开,可以理解成使用Nginx处理静态页面 ...

  7. Centos7 Apache结合tomcat实现动静分离

    Apache和tomcat为什么要做动静分离 Apache是普通服务器,本身只支持html即普通网页.不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过 ...

  8. Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化......

    干货!文章有点长,建议先收藏 引言 一.性能怪兽-Nginx概念深入浅出 二.Nginx环境搭建 三.Nginx反向代理-负载均衡 四.Nginx动静分离 五.Nginx资源压缩 六.Nginx缓冲区 ...

  9. Nginx配置实例-动静分离

    1.什么是动静分离 Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态 ...

最新文章

  1. 在ubuntu20.10上搭建SVN Server
  2. 编写一个爬虫类库——(一)想法
  3. 使用Roslyn脚本化C#代码,C#动态脚本实现方案
  4. 河北省高校计算机大赛,河北省教育厅关于举办2016年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛的通知...
  5. SpringMVC面试
  6. python中第三方模块_如何在python脚本中包含第三方模块?
  7. linux的grub界面退出,linux退出 grub
  8. 官方数据:程序员年纪越大越出色、越稀有
  9. 微云笔记控制脚本实例:远程控制脚本开关
  10. Spring Boot 2.0.3 集成 ActiveMQ 5.15.4 与 内嵌启动 ActiveMQ 服务
  11. PyCharm:Error running xxx: Cannot run program D:\Python27\python.exe
  12. JAVA 随机数学习
  13. 38. Python批量翻译英语单词
  14. 雷达探测原理及坐标表示
  15. openwrt下增加FTP alg功能
  16. Java改良贪吃蛇小游戏
  17. GraphPad Prism 科研绘图(一)
  18. 鼠标移入或悬浮禁用图标,点击事件不生效
  19. python编写word_如何使用Python来编辑word
  20. Linxu命令(3)

热门文章

  1. What happened when we perform Maven Update Project in Eclipse
  2. SAP OData执行的后台跟踪工具
  3. 使用简单的Java代码在SAP C4C里创建销售订单
  4. Android日志拦截器,Retrofit2日志拦截器的使用
  5. java js隐藏_Javascript匿名函数是否仍然可见? (使用Java applet,这是一种隐藏JS代码的方法)...
  6. dll已加载但找不到入口点dllregisterserver_Java 是如何加载类的?
  7. c++小项目_编程初学者的练手小项目(Pythonamp;C/C++)
  8. react map循环生成的button_关于Vue和React的一些对比及个人思考(中)
  9. 程序员应该了解的几个接单平台,私活,码农!
  10. android 照片多选,Android: 关于系统相册多选图片的问题