趣文网 > 作文大全

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

2020-12-06 09:30:02
相关推荐

起源

有些人总是不带我喝咖啡,认为喝咖啡高雅,吃大蒜低俗,还好,没有俗就没有雅。。。我就俗了,怎么地,打我呀。。。。哈哈

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

访问网页的时候,我们总会发现浏览器会加载各种各样的文件,有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 0.0.0.0:* LISTEN 13933/nginx

安装jdk:

[root@mogilenode3 server]# rpm -ivh jdk-8u144-linux-x64.rpmPreparing… ########################################### [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.shexport JAVA_HOME=/usr/java/latestexport 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.shexport CATALINA_HOME=/usr/local/tomcatexport PATH=$CATALINA_HOME/bin:$PATH

测试tomcat是否安装成功:

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

创建动态文件

根据java的目录层次结构,写一个基本的页面,如下:

[root@mogilenode3 webapps]# mkdir kel[root@mogilenode3 webapps]# cd kel[root@mogilenode3 kel]# ls -ltotal 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 -ltotal 20drwxr-xr-x 2 root root 4096 Sep 20 14:46 classes-rw-r–r– 1 root root 201 Sep 20 14:46 index.jspdrwxr-xr-x 2 root root 4096 Sep 20 14:46 libdrwxr-xr-x 2 root root 4096 Sep 20 14:46 META-INFdrwxr-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.com80 (使用curl进行访问)JAVA PAGEHello,World

配置nginx

配置主机名解析:

[root@mogilenode2 nginx]# grep “www.kel.com” /etc/hosts192.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.confserver_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.com80;}

上传静态文件到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用户。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

摔了一跤漫画作文 借秋景抒情的作文 微笑作文题目 经历是一种收获的作文 也是一种幸福作文 一件事的作文600字 我爱母校作文600字 打屁股作文女贝网 让座作文500字 人蚁大战作文 我的同学作文外貌描写 桃花作文200字 别了我的童年作文 关于教师节的作文300字 全国学生作文大赛 秋作文100字 我喜欢这样的生活作文600字 生活中发生的事的作文300字 必修一语文作文 记事文作文600字 数学老师的作文 关于打扫卫生的作文 我最喜爱的玩具积木作文 关于文明出行的作文 小学开运动会的作文 三年级的作文书 写景游记作文500字 我梦想的学校英语作文 关于关爱的作文结尾 我就要毕业了作文