本文目錄一覽:
JSP適合做大型網站,為什麼百度主頁還是PHP寫
首先我們來看看百度首頁是不是真的用的是php,index.php無疑是可以打開的,但是我們也知道,可以通過對HTTP服務軟件層面進行路由設置,使得這個地址實際解析到其他內容,比如靜態文件或者是其他CGI處理的資源,比如偽靜態的實現是將html路由到其他動態資源,比如php(考慮到緩存,也有可能是靜態資源),所以單憑這個無法確定是否是php。
於是用chrome打開百度,;
t;
我們需要看的信息是紅色框框出來的內容,首先我們看到Sever的值被設置成了bfe/1.0.8.14,http頭中的server字段一般是http服務器的名稱,比如知乎:
Qnginx,猜測可能是魔改Nginx吧。百度的bfe,要麼是自家產品,要麼有可能也是改動了nginx之類的源代碼,這個參見百度首頁用的什麼服務器?
那麼我們再看看setcookie裏面,設置的cookie內容。我們知道,一般php自身設置的cookie會有類似下面這樣的字段:
t;然而我們看看百度的:
t;有很多以百度命名的Token字段,沒有採用php自帶的cookie,也看起來不像很多語言/框架自帶的cookie,後文會講。
我們再看看在百度首頁的請求中有一個字段:
HPHP,這是HHVM,如果不是百度使用代理或者在HTTP服務器層面上修改頭或者修改HHVM(百度應該也不會這麼閑的蛋疼去改一個不是機密的東西),那麼應該就是用PHP了。那麼我們解釋一下為什麼不用默認的(默認的cookie會出現PHPSESSID的字段)session_start()
有可能是為了分佈式服務或者性能的需求,因為Session的控制大多是用文件控制,這樣的話,session儲存在請求的服務器上面,但是如果是分佈式的,就會產生不同步問題:比如一台PHP服務器上有你的session,但是你下次請求因為負載均衡而到了另一台服務器,這台服務器上沒有你的session,那你就得重新登錄了。所以百度可能使用了自己的session方法,比如使用這些字段,實際session內容儲存在數據庫或是其他地方。
確定百度首頁用的是PHP,我來回答題主的問題。
關於即時搜索,搜索引擎一般是先爬取網絡上內容,然後進行排名,最後放到倒排索引中(最簡單版本就是搜索關鍵字對應搜到的id),對搜索性能影響較大的地方在於倒排索引數據庫的吞吐量和響應速度,比如我使用Spark/Hadoop之類來儲存倒排索引,這個倒排索引數據庫是分佈式的。Spark雖然不是Java寫的,但是和java一樣運行在JVM上面,JVM的確很成熟。
關於你說的輸入加載等等功能,使用Java使用PHP其實都無關緊要,因為真正慢的部分在數據庫響應。舉個形象的例子:Java和PHP用10ns,網絡傳輸用20ms,數據庫取出數據用350ms,你覺得有必要在乎前端的Java或者PHP嗎?(PS:HHVM速度也很快,PHP也有負載均衡手段)
最後:紙上得來終覺淺,得知此事要躬行。尤其是做技術,技術文章太亂了,各種說法都有,有些說法不經過嚴格測試,有的說的是十幾年前過時的東西。
為什麼百度主頁還是PHP寫的
用PHP開發網站確實比較好。因為PHP是一種強大的CGI腳本語言,語法混合了C、Java、Perl和PHP式的新語法,執行網頁速度比CGI、Perl和ASP更快,而且內嵌Zend加速引擎,性能穩定快速,佔用系統資源少,代碼執行速度快。PHP消耗相當少的系統資源。
百度為什麼使用PHP
由於硬件成本和以後的數據分析,核心數據上通常不會交給腳本處理。
而對於頻繁變動的展示層,JAVA web在擴展維護上成本非常高,PHP都下班了JAVA還在改,上線了還得派一群運維看着灰度。
此外在大型項目中,還要加入cache層和處理機優化,這已經不是程序猿經理總監能協調了,什麼語言問題都扔一邊去。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/156578.html