【20年品牌建站】找北京网站建设公司就选新鸿儒/提供北京网站建设报价/北京网站制作/北京网站设计/网站开发、北京网站建设公司电话【010-51267718】有优惠哦!
简体
繁体 简体
我们的服务遍布中国

我们的服务遍布中国
乃至世界

新鸿儒所服务的品牌地域与城市
北京 天津 上海 广州 深圳 香港 厦门 江苏 浙江 山东
重庆 长沙 武汉 成都 西安 宁夏 丽江 青海 云南 乌鲁木齐
黑龙江 内蒙古 河北 ...
新鸿儒服务与合作的全球各地
美国 加拿大 德国 法国 英国 瑞士 意大利 荷兰
印度 日本 韩国 ...

不论你的品牌在何处
我们都可以提供完善的服务与帮助

致电

010-51267718

动静分离,提高网页访问速度

发布时间:2018-02-12 浏览:559打印字号:

  动静分离,那么什么动态的,什么是静态的呢?


  访问网页的时候,我们总会发现浏览器会加载各种各样的文件,有html文件,有css样式表,有js脚本,还有图片,还有流媒体等各种文件,这些其实就是静态的文件,放在服务器上,无须动态生成的文件那么就是静态文件。那么什么是动态文件呢?例如java写的jsp文件,需要通过编译器进行编译成字节码文件,然后在java虚拟机上运行,运行之后,返回给客户端一个响应,有的时候,还需要到数据库中取出数据,那么这种需要经过编译的文件就称之为动态文件。


  动态文件的处理比静态文件的处理速度要慢N倍,慢在啥地方呢?首先,动态文件需要编译,耗费时间,动态文件要去连接数据库,耗费时间,动态文件需要组织成http响应,耗费时间,根据java的流程,那么就是根据url,找到jsp文件,将jsp文件转换成servlet文件,然后形成类文件,然后在jvm上运行,jvm可能还要加载额外的类文件,然后组成成响应返回给servlet,然后再返回给客户端。


  在使用动静分离的时候,一般使用的模型如下所示:

  在使用动静分离的时候,需要将一些静态的文件和动态的文件分离开来,从而使用nginx来处理静态请求,而使用tomcat来处理动态的请求,从而会大大的提高处理速度,为啥?


  nginx和httpd是专门用来处理静态文件的,效率极高,并且由nginx直接响应,减少了向后端转发的过程;将动态内容和静态内容进行分离,可以提高资源利用率,nginx的性能得到发挥,也让tomcat不会那么繁忙,动态服务器机器耗费性能,例如在java中的各种方法区对象的回收,堆内存的回收等。


  构建动静分离的环境


  要想构建动静分离的环境,那么就需要安装nginx,安装jdk,然后安装tomcat,具体的步骤如下:

  编译安装nginx:
[root@mogilenode2 nginx-1.10.1]# ./configure –prefix=/usr/local/nginx –with-http_ssl_module –with-http_stub_status_module –with-pcre
[root@mogilenode2 nginx-1.10.1]# make && make install
[root@mogilenode2 ~]# /usr/local/nginx/sbin/nginx (启动nginx)
[root@mogilenode2 ~]# netstat -tnlp|grep nginx(查看监听端口,并且使用浏览器访问测试)
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      13933/nginx



  安装jdk:
[root@mogilenode3 server]# rpm -ivh jdk-8u144-linux-x64.rpm
Preparing…                ########################################### [100%]
1:jdk1.8.0_144           ########################################### [100%]
Unpacking JAR files…
tools.jar…
plugin.jar…
javaws.jar…
deploy.jar…
rt.jar…
jsse.jar…
charsets.jar…
localedata.jar…


  配置java环境变量:

[root@mogilenode3 server]# echo “export JAVA_HOME=/usr/java/latest”>/etc/profile.d/java.sh
[root@mogilenode3 server]# echo “export PATH=$JAVA_HOME/bin:$PATH”>>/etc/profile.d/java.sh
[root@mogilenode3 server]# cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


  测试jdk及环境变量是否成功:



  安装tomcat:
[root@mogilenode3 server]# tar -xf apache-tomcat-8.5.20.tar.gz -C /usr/local/
l[root@mogilenode3 server]# ln -sv /usr/local/apache-tomcat-8.5.20/ /usr/local/tomcat
`/usr/local/tomcat’ -> `/usr/local/apache-tomcat-8.5.20/’


  配置tomcat环境变量:

[root@mogilenode3 local]# vim /etc/profile.d/tomcat.sh
[root@mogilenode3 local]# cat !$
cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH


  测试tomcat是否安装成功:

[root@mogilenode3 ~]# netstat -tnlp|grep java(注意浏览器访问的时候,添加端口号来进行访问)
tcp        0      0 :::8080                     :::*                        LISTEN      1125/java
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      1125/java
tcp        0      0 :::8009                     :::*                        LISTEN      1125/java


  创建动态文件
  根据java的目录层次结构,写一个基本的页面,如下:
[root@mogilenode3 webapps]# mkdir kel
[root@mogilenode3 webapps]# cd kel
[root@mogilenode3 kel]# ls -l
total 0
[root@mogilenode3 kel]# mkdir {META-INF,WEB-INF,classes,lib}
[root@mogilenode3 kel]# vim index.jsp
[root@mogilenode3 kel]# cat index.jsp
<%@ page language=”java” %>
<%@ page import=”java.util.*” %>


JAVA PAGE


<% out.println(“Hello,World”); %>


[root@mogilenode3 kel]# ls -l
total 20
drwxr-xr-x 2 root root 4096 Sep 20 14:46 classes
-rw-r–r– 1 root root  201 Sep 20 14:46 index.jsp
drwxr-xr-x 2 root root 4096 Sep 20 14:46 lib
drwxr-xr-x 2 root root 4096 Sep 20 14:46 META-INF
drwxr-xr-x 2 root root 4096 Sep 20 14:46 WEB-INF


  修改tomcat的配置文件server.xml(添加一个虚拟主机,主机名为www.kel.com,,默认路径为webapps下面的kel目录):





  测试访问:

[root@mogilenode3 conf]# grep “www.kel.com” /etc/hosts (设置主机名解析)
192.168.1.238 www.kel.com
[root@mogilenode3 conf]# curl http://www.kel.com:8080 (使用curl进行访问)


JAVA PAGE


Hello,World



  配置nginx

  配置主机名解析:
[root@mogilenode2 nginx]# grep “www.kel.com” /etc/hosts
192.168.1.237 www.kel.com
[root@mogilenode2 conf]# ls -l nginx.conf(修改nginx配置文件,将动态请求也就是文件后缀为jsp或者do的请求转发到tomcat上,由于是虚拟主机,所以url中必须写上主机名,静态页面在nginx上处理,静态页面在html路经下)
-rw-r–r– 1 root root 2727 Sep 20 15:09 nginx.conf
server_name  www.kel.com;
#charset koi8-r;
#access_log  logs/host.access.log  main;
location / {
root   html;
index  index.html index.htm;
}
location ~* \.(jsp|do)$ {
proxy_pass http://www.kel.com:8080;
}
  上传静态文件到nginx的html目录中,用来测试静态文件的访问:
[root@mogilenode2 nginx]# ls -l html/1.jpg
-rw-r–r– 1 root root 25854 Sep 20 15:13 html/1.jpg


  访问nginx服务器测试静态文件访问:



  访问nginx服务器,测试动态页面访问:




  总体上来说,动静分离还是比较简单的,主要让前端的代理服务器直接响应静态请求,让前端的代理服务器转发动态请求到后端的tomcat服务器即可。
  注意上面的是实验环境,对于tomcat的运行的用户是直接的root用户,在生产中,必须修改为其他不能登录的用户,例如tomcat用户。


  (原文来自运维派)


现在就与新鸿儒客服交流

010-51267718

您也可进行在线咨询或预约项目顾问
我要预约
在线咨询