動(dòng)靜分離,提高網(wǎng)頁(yè)訪問(wèn)速度
發(fā)布時(shí)間:2018-02-12 瀏覽:616打印字號(hào):大中小
動(dòng)靜分離,那么什么動(dòng)態(tài)的,什么是靜態(tài)的呢?
訪問(wèn)網(wǎng)頁(yè)的時(shí)候,我們總會(huì)發(fā)現(xiàn)瀏覽器會(huì)加載各種各樣的文件,有html文件,有css樣式表,有js腳本,還有圖片,還有流媒體等各種文件,這些其實(shí)就是靜態(tài)的文件,放在服務(wù)器上,無(wú)須動(dòng)態(tài)生成的文件那么就是靜態(tài)文件。那么什么是動(dòng)態(tài)文件呢?例如java寫(xiě)的jsp文件,需要通過(guò)編譯器進(jìn)行編譯成字節(jié)碼文件,然后在java虛擬機(jī)上運(yùn)行,運(yùn)行之后,返回給客戶(hù)端一個(gè)響應(yīng),有的時(shí)候,還需要到數(shù)據(jù)庫(kù)中取出數(shù)據(jù),那么這種需要經(jīng)過(guò)編譯的文件就稱(chēng)之為動(dòng)態(tài)文件。
動(dòng)態(tài)文件的處理比靜態(tài)文件的處理速度要慢N倍,慢在啥地方呢?首先,動(dòng)態(tài)文件需要編譯,耗費(fèi)時(shí)間,動(dòng)態(tài)文件要去連接數(shù)據(jù)庫(kù),耗費(fèi)時(shí)間,動(dòng)態(tài)文件需要組織成http響應(yīng),耗費(fèi)時(shí)間,根據(jù)java的流程,那么就是根據(jù)url,找到j(luò)sp文件,將jsp文件轉(zhuǎn)換成servlet文件,然后形成類(lèi)文件,然后在jvm上運(yùn)行,jvm可能還要加載額外的類(lèi)文件,然后組成成響應(yīng)返回給servlet,然后再返回給客戶(hù)端。
在使用動(dòng)靜分離的時(shí)候,一般使用的模型如下所示:

nginx和httpd是專(zhuān)門(mén)用來(lái)處理靜態(tài)文件的,效率極高,并且由nginx直接響應(yīng),減少了向后端轉(zhuǎn)發(fā)的過(guò)程;將動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容進(jìn)行分離,可以提高資源利用率,nginx的性能得到發(fā)揮,也讓tomcat不會(huì)那么繁忙,動(dòng)態(tài)服務(wù)器機(jī)器耗費(fèi)性能,例如在java中的各種方法區(qū)對(duì)象的回收,堆內(nèi)存的回收等。
要想構(gòu)建動(dòng)靜分離的環(huán)境,那么就需要安裝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 (啟動(dòng)nginx)
[root@mogilenode2 ~]# netstat -tnlp|grep nginx(查看監(jiān)聽(tīng)端口,并且使用瀏覽器訪問(wèn)測(cè)試)
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環(huán)境變量:
[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
測(cè)試jdk及環(huán)境變量是否成功:
安裝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環(huán)境變量:
[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
測(cè)試tomcat是否安裝成功:
[root@mogilenode3 ~]# netstat -tnlp|grep java(注意瀏覽器訪問(wèn)的時(shí)候,添加端口號(hào)來(lái)進(jìn)行訪問(wèn))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
根據(jù)java的目錄層次結(jié)構(gòu),寫(xiě)一個(gè)基本的頁(yè)面,如下:
[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.*” %>
<% 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(添加一個(gè)虛擬主機(jī),主機(jī)名為www.kel.com,,默認(rèn)路徑為webapps下面的kel目錄):
測(cè)試訪問(wèn):
[root@mogilenode3 conf]# grep “www.kel.com” /etc/hosts (設(shè)置主機(jī)名解析)192.168.1.238 www.kel.com
[root@mogilenode3 conf]# curl http://www.kel.com:8080 (使用curl進(jìn)行訪問(wèn))
Hello,World
配置nginx
配置主機(jī)名解析:[root@mogilenode2 nginx]# grep “www.kel.com” /etc/hosts
192.168.1.237 www.kel.com
[root@mogilenode2 conf]# ls -l nginx.conf(修改nginx配置文件,將動(dòng)態(tài)請(qǐng)求也就是文件后綴為jsp或者do的請(qǐng)求轉(zhuǎn)發(fā)到tomcat上,由于是虛擬主機(jī),所以u(píng)rl中必須寫(xiě)上主機(jī)名,靜態(tài)頁(yè)面在nginx上處理,靜態(tài)頁(yè)面在html路經(jīng)下)
-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;
}
上傳靜態(tài)文件到nginx的html目錄中,用來(lái)測(cè)試靜態(tài)文件的訪問(wèn):
[root@mogilenode2 nginx]# ls -l html/1.jpg
-rw-r–r– 1 root root 25854 Sep 20 15:13 html/1.jpg
訪問(wèn)nginx服務(wù)器測(cè)試靜態(tài)文件訪問(wèn):
訪問(wèn)nginx服務(wù)器,測(cè)試動(dòng)態(tài)頁(yè)面訪問(wèn):
總體上來(lái)說(shuō),動(dòng)靜分離還是比較簡(jiǎn)單的,主要讓前端的代理服務(wù)器直接響應(yīng)靜態(tài)請(qǐng)求,讓前端的代理服務(wù)器轉(zhuǎn)發(fā)動(dòng)態(tài)請(qǐng)求到后端的tomcat服務(wù)器即可。
注意上面的是實(shí)驗(yàn)環(huán)境,對(duì)于tomcat的運(yùn)行的用戶(hù)是直接的root用戶(hù),在生產(chǎn)中,必須修改為其他不能登錄的用戶(hù),例如tomcat用戶(hù)。
(原文來(lái)自運(yùn)維派)
- 1簡(jiǎn)約至美!新鴻儒傾力打造《銳馳官網(wǎng)》??榮獲2018IAI設(shè)計(jì)優(yōu)勝獎(jiǎng)
- 2中紀(jì)委監(jiān)察部官網(wǎng)2018新版上線??新鴻儒設(shè)計(jì)增色彩
- 3新鴻儒?新春大拜年
- 4關(guān)于新麒麟抄襲新鴻儒官網(wǎng)的聲明
- 5不忘初心,感恩前行?新鴻儒新年遷新居
- 6華星鋼構(gòu)攜手新鴻儒??高端網(wǎng)站隆重亮相
- 7中儲(chǔ)糧簽約新鴻儒?糧食巨頭擁抱互聯(lián)網(wǎng)
- 8新鴻儒簽約方正??塑造集團(tuán)互聯(lián)網(wǎng)品牌形象
- 9國(guó)美再次攜手新鴻儒?創(chuàng)新升級(jí)品牌官網(wǎng)
- 10新鴻儒協(xié)辦第二屆互聯(lián)網(wǎng)大會(huì)??助力工程建設(shè)行業(yè)互聯(lián)網(wǎng)+
- 1新鴻儒攜手飛鶴乳業(yè)?打造千萬(wàn)中國(guó)媽媽的育兒私享平臺(tái)
- 2猴子請(qǐng)來(lái)的救兵——新鴻儒
- 3中紀(jì)委監(jiān)察部官網(wǎng)2018新版上線??新鴻儒設(shè)計(jì)增色彩
- 4新鴻儒助力SOHO3Q項(xiàng)目成功上線
- 5新鴻儒助力中科曙光,共繪科技新篇章
- 6新鴻儒二度攜手瀘州老窖,打造品牌宣傳互聯(lián)網(wǎng)建設(shè)閉環(huán)!
- 7新鴻儒誠(chéng)賀復(fù)星集團(tuán)全新官網(wǎng)正式上線運(yùn)營(yíng)
- 8新鴻儒簽約香馳控股,構(gòu)建全新品牌新體驗(yàn)
- 9中糧再度攜手新鴻儒??集團(tuán)內(nèi)網(wǎng)注入新活力
- 10政府創(chuàng)新看國(guó)家級(jí)新區(qū)橫琴