【20年品牌建站】找北京網站建設公司就選新鴻儒/提供北京網站建設報價/北京網站制作/北京網站設計/網站開發、北京網站建設公司電話【010-51267718】有優惠哦!
簡體
繁體 簡體
我們的服務遍布中國

我們的服務遍布中國
乃至世界

新鴻儒所服務的品牌地域與城市
北京 天津 上海 廣州 深圳 香港 廈門 江蘇 浙江 山東
重慶 長沙 武漢 成都 西安 寧夏 麗江 青海 云南 烏魯木齊
黑龍江 內蒙古 河北 ...
新鴻儒服務與合作的全球各地
美國 加拿大 德國 法國 英國 瑞士 意大利 荷蘭
印度 日本 韓國 ...

不論你的品牌在何處
我們都可以提供完善的服務與幫助

致電

010-5126 7718

動靜分離,提高網頁訪問速度

發布時間:2018-02-12 瀏覽:214打印字號:

  動靜分離,那么什么動態的,什么是靜態的呢?


  訪問網頁的時候,我們總會發現瀏覽器會加載各種各樣的文件,有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

您也可進行在線咨詢或預約項目顧問
我要預約
在線咨詢
亚洲 小说区 亚洲 另类 小说 春色 小说区 图片区 综合区