當前位置:編程學習大全網 - 源碼下載 - JSP適合做大型網站,為什麽百度主頁還是PHP寫

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也有負載均衡手段)

最後:紙上得來終覺淺,得知此事要躬行。尤其是做技術,技術文章太亂了,各種說法都有,有些說法不經過嚴格測試,有的說的是十幾年前過時的東西。

  • 上一篇:如何使用Laravel立面
  • 下一篇:葬禮網站源代碼
  • copyright 2024編程學習大全網