最流行的PHP MVC架構
http://yp.oss.org.cn/software/show_resource.php?resource_id=742
Yii(音 易架構,我一般直接讀YII) CodeIgniter(簡讀CI) Symfony CakePHP
MVC ,這個看百度就行,MVC在電腦界通用
http://baike.baidu.com/view/31.htm
如何提高php運行速度
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0105/9616.html
這裡提到了Zend Optimizer,一般這個都不太用
Zend Cache、APC和Afterburner Cache,這幾種模組緩衝,APC是常用的,一般用它緩衝include require的東西(開啟apc功能後,這些自動的,即之後php運行到require的東西不會去讀硬碟,而是讀cache)
壓縮網頁內容,是指內容類別的網站,輸出的html代碼很多,開啟gzip減少網路傳輸量
代碼層面的,代碼複用,使用內建函式,演算法好一些,邏輯簡化,都能一定程度加速
提高速度,本質的找到一個功能塊的效能瓶頸,針對問題做特別的最佳化。
比如如果mysql讀取量較大,根據使用頻繁程度做cache,避免多次請求mysql,分擔壓力。cache可以使用本地檔案cache,可以使用memcache redis以及一些nosql資料庫(nosql的資料庫一般都是key-value資料庫)
有一些很耗時的處理,可以考慮是否可以預先處理,通過計劃任務定時處理好存起來,使用時直接調用,而不用現計算。
還有一些耗時,但是此次請求並不直接關心結果的,可以考慮非同步處理,比如把它丟給[訊息佇列],由另一個程式去執行相關操作,這樣當前程式可以很快返回結果。
所有高並發的網站架構,都是要分布式的,即一個請求可能會由好多個機器共同分擔完成,網站伺服器分布,資料庫分布,儲存分布。
網站分布,為了增加不同地區使用者訪問速度,會將網站主機布到多種機房內,電信,聯通,鐵通,移動,海外等機房。訪問的時候根據來源分配到相應的伺服器上,一般同一種網路內的伺服器是隨機分配的,使用負載平衡器,來做調度,也可以使用DNS輪循的方式隨機分配。問你負載平衡等實現細節可以不知道,提到這些詞就可以了,有硬體專門做,也可以用程式來類比實現。程式實現無非是寫一個演算法來隨機分配。DNS輪循的要在DNS解析層做,這些是營運的事情。
網站分布了,資源請求是內部的,各機房之內通過伺服器之間打通來實現高速訪問,這是網路營運的事情。簡單的做法是在伺服器上採用雙線或多線,即一台伺服器有電信的IP也有網通的IP,這樣不同的網路過來,請求不同的IP地址,達到更高速訪問的目的。
資料庫分布,mysql提供主從(master-slave)的方式,即資料庫有一個主伺服器,可以有許多從伺服器,slave從master同步資料,網站伺服器請求時從slave來查詢,減輕master壓力。也可以按資料業務切分,將不同的資料放在不同的伺服器上,這樣也會減輕資料請求的壓力(但同時要訪問多台資料庫伺服器,又增加了一些開銷)。mysql的主從同步原理是binlog,通過同步主伺服器的操作命令過程,來實現在從伺服器上重建資料。同時這種模式也實現了讀寫分離,寫的時候在master上寫,讀的時候在slave上讀。防止大並發時受寫入速度影響讀取速度
儲存分布,一些資源可以不必放在主網站上,比如js css 圖片,可以放到其它機器上,我們經常會發現一些大網站的圖片,可能是img1 img2 img3 static pic等網域名稱開頭的這些都是將這種資源分開的做法。同時這些靜態資源,可以使用CDN來加速(CDN的全稱是Content Delivery Network,即內容分髮網絡),CDN伺服器可以自己建,也可以購買第三方服務
版本管理,從CVS 到SVN 以及GIT,一般要會SVN,CVS是早期使用的,現在被SVN取代,新一代的GIT現在正在崛起。
代碼版本管理軟體的作用是,將代碼儲存在伺服器上,通過更新,提交兩種操作,來實現代碼的最終修改,這樣多人合作時方便。在版本發布時,打一個tag,就將代碼定格在那一時刻。你可以繼續開發你的,不會干擾那個tag。也可以開多個分支,這樣可以由不同的人開發多種版本,可以1.0 2.0等版本同時開發,互不影響。開發完了,也可以版本合并。
使用版本管理還有一個好處是,代碼在伺服器上,即使本機壞了,也不會影響大家工作成果。如果有人誤操作,將代碼毀了,也可以復原。
關於這三種版本管理軟體使用方法,自己百度
HTTP協議
http://www.blogjava.net/zjusuyong/articles/304788.html
重點看一下狀態代碼,200 304 403 404 500 502,其中304是伺服器設定一個靜態檔案失效時間,在有效期間內,瀏覽器接到伺服器端返回304狀態,不再從伺服器傳送檔案,而使用瀏覽器緩衝。這篇文章有時間要細讀,這是整個web請求的根基。很多最佳化的本質都是圍繞這個協議進行的。包括cookie是http協議的組成部分。
兩種常見保持會話的手段cookie session的區別
http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html
GET POST兩種http請求的區別
http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
JSON 和 XML 這兩種資料格式
http://wenku.baidu.com/view/49800b83d4d8d15abe234e83.html
這兩種資料格式,通常做為第三方請求資料的返回格式,也可以是伺服器向前端返回資料的格式。自己的項目多用在AJAX請求返回。
關於AJAX
http://www.w3school.com.cn/ajax/
AJAX = 非同步 JavaScript 和 XML。也可以使用Json來替代XML。
然後又涉及javascript的幾個架構
http://www.blogjava.net/kent/articles/202855.html
主流使用的是 jQuery,它的普遍使用是因為它使用起來很簡單,容易理解
jQuery教程 http://www.w3school.com.cn/jquery/
Linux常用命令
cd ls cp rm mkdir ssh rsync wcp sudo
具體的命令不一定會考,但一定會問你會不會用linux,因為90%的互連網公司的web項目使用都是linux 或unix 做為伺服器,而不是windows
Mysql的幾種儲存(表)引擎
http://database.51cto.com/art/201105/259232.htm
主流使用MyISAM InnoDB
InnoDB和Myisam區別
http://wenku.baidu.com/view/2630add5b9f3f90f76c61b35.html
NoSQL資料庫
http://www.infoq.com/cn/news/2011/01/nosql-why
http://robbin.iteye.com/blog/524977
Redis,Tokyo Cabinet,MongoDB
Memcache也是NoSQL資料庫,但是它並不是持久儲存,只是放在記憶體中的cache
http://www.cnblogs.com/qiantuwuliang/archive/2011/03/07/1974499.html
memcache的用法
三大WEB伺服器對比分析 apache lighttpd nginx
http://wenku.baidu.com/view/96095c1f227916888486d7d2.html
全文檢索搜尋的幾種工具
Coreseek Sphinx Lucene
PHP的三種運行方式
http://blog.csdn.net/anljf/article/details/7086034
apache模組方式 CGI方式 FastCGI方式
PHP開發程式應該注意的42個最佳化準則
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0105/9617.html