在日常的網頁開發中,apache的角色是什麼樣的?(如果並不需要將數據上載伺服器的話),為什麼一定要用


如果僅僅為了開發一個網頁,開發完成自己在瀏覽器就能預覽一下,那用不用apache關係不大。但開發的多個網頁,你如果想讓別人也看看效果啥的,這時候,你是會發這些網頁文件(html文件)發給這些人,還是搭個環境,給別人提供一個url就OK了呢?

而在搭這個環境的時候,將會用到Apache、IIS這類的Web Server。

而更有些時候,你是需要處理一些動態的資源,此時,直接發送源文件並不能讓人看到實際效果,往往這個時候除了Apache這種Web Server,還需要能解析特定語言的容器,像JSP、Servlet對應的Tomcat。

這樣動態靜態資源都能響應的時候,你的文件效果就展示了出來。

此處,我在公眾號里也寫了一些關於Web Server與Web Container的區別,一併寫出來:

所以你會經常看到面試題問: Tomcat 和 Apache 有什麼區別

那到底有什麼區別呢?

對Tomcat這種角色,有一個統一的稱呼:Web容器(Web Container). 類似的Web容器還有Jetty, Resin等。

為啥叫容器呢?

因為在軟體領域,這種管理整體要處理事物的生命周期的,都叫容器。 這裡的Tomcat負責整個Servlet的生命周期(LifeCycle),包含什麼時候創建Servlet,什麼時候初始化內部的一些資源,請求處理的時候執行什麼方法,什麼時候銷毀等。就像一個大家長一樣。所以,你會常聽到Spring的Ioc是通過Ioc容器實現的,因為它也是要管理整個Spring Bean的生命周期的呀。

那回過頭來看,Apache是幹嘛的呢?

像Apache這樣的,也有一類稱呼,叫做Web伺服器(Web Server)。這類兄弟,他們只能處理HTTP協議,例如我們在請求HTML,圖片等這些靜態資源的時候,可以通過Web伺服器來完成。但如果請求的是JSP,PHP等,這些時候,Web伺服器就力不從心,只能將請求轉給合適的人去處理,如果請求JSP或Servlet,那這個合適的人就是上面的Web容器。類似的Web伺服器有Apache, IIS, Nginx等。

所以,總結下,兩者的區別就是Tomcat不僅可以用於處理動態資源,處理Servlet、JSP,也能處理靜態資源,而Apache只能處理靜態資源。這個面試題的變種是Web Container和Web Server有什麼區別,我相信你已經知道答案了。

這個時候,你一定會說,那Tomcat這小子能都幹了,還要Apache幹嘛呢?

哎,這小子當時學的挺多,也都挺好,但處理靜態資源這事,沒學特別精。就像說裁縫可能也自己會做飯,但總歸不如廚師專業。

所以處理靜態資源的時候,可以在Tomcat前面配置一個Apache這類的Web Server,不僅可以高效處理靜態資源,還可以把這些常用的靜態資源緩存起來,甚至還能完成負載均衡的目的(當然,這還需要後面Web Container做集群)

歡迎關注。

http://weixin.qq.com/r/ajn07CPE6n6VrWeP92x4 (二維碼自動識別)


推薦閱讀:

PHP初學者應該選擇哪個版本的ThinkPHP?
為什麼http請求要3次握手與4次揮手?
如何評價thinkphp5.0?
為什麼rsa加密時我把密鑰長度設成256位,太長的字元串加密就會出錯?
php如何實現數組合併但鍵值相同的數組不互相覆蓋?

TAG:PHP | Apache | ApacheTomcat |