1. 不要使用 mysql_ 類(lèi)函數(shù)
終于,你不用再看到建議不要使用 mysql_
函數(shù)的提示了。因?yàn)?PHP 7 從核心上完全移除了它們,這意味著請(qǐng)你移步至更好的 mysqli_
類(lèi)函數(shù),或者更靈活的 PDO 層。
2. 不要寫(xiě)無(wú)用的代碼
這看上去是個(gè)無(wú)腦建議,但是隨著 PHP7 速度的提升掩蓋了一些問(wèn)題使它顯得日趨重要。不要僅僅因切到 PHP7 讓網(wǎng)站速度變得快點(diǎn),你就沾沾自喜了。
想理解速度的重要性和如何做的更好,去看看我們這篇文章 初學(xué)者加速優(yōu)化指南。
作為開(kāi)發(fā)者,應(yīng)該確保按需加載腳本,可能時(shí)再組合,編寫(xiě)高效的數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句,如果可能的話(huà) 使用緩存 等等。
3. 不要在文件末尾使用 PHP 閉合標(biāo)簽
如果你隨便看看,就會(huì)發(fā)現(xiàn)大部分 WordPress 核心代碼文件結(jié)尾都省略了 PHP 閉合標(biāo)簽。事實(shí)上,Zend 框架尤為明顯地 禁止了閉合標(biāo)簽。它并非 PHP 所必須,在文件結(jié)尾處省略它,可確保結(jié)尾無(wú)額外空白。
4. 如非必須不要引用傳參
我個(gè)人非常不喜歡引用傳參。我當(dāng)然知道在某些場(chǎng)合下它很有用,但是多數(shù)場(chǎng)合下,它會(huì)使得代碼難以理解,難以遵循,難以預(yù)測(cè)結(jié)果。
人們認(rèn)為引用可以使它們的代碼更快,不過(guò)正如 可敬的 PHP 程序員 的這篇文章所指出的,事實(shí)并非如此。
PHP 內(nèi)置的 shuffle()
或者 sort()
函數(shù),就是糟糕的引用傳參案例。 它修改了原數(shù)組而不是返回一個(gè)打亂的或者排好序的數(shù)組,這是完全違背了我們意愿的。
5. 不要在循環(huán)里使用查詢(xún)
在循環(huán)中使用數(shù)據(jù)庫(kù)查詢(xún)時(shí)最糟糕的。他會(huì)給系統(tǒng)帶來(lái)不必要的壓力,并且很有可能,你可以在循環(huán)外使用查詢(xún)而更快的得到相同的結(jié)果。當(dāng)我碰到必須這樣用的場(chǎng)景時(shí),我通常會(huì)通過(guò)分成兩個(gè)查詢(xún)來(lái)構(gòu)造一個(gè)數(shù)組的方式來(lái)解決。然后循環(huán)數(shù)組而無(wú)需循環(huán)查詢(xún)。
由于 WordPress 的運(yùn)行方式,這樣做可能會(huì)有些例外。 get_post_meta()
將從數(shù)據(jù)庫(kù)獲取一個(gè)元數(shù)據(jù),如果您正在循環(huán)訪問(wèn)特定文章的元數(shù)據(jù),則可以在循環(huán)中使用它。這是因?yàn)楫?dāng)你第一次使用它的時(shí)候,WordPress 實(shí)際上取得了所有的元數(shù)據(jù)并緩存了起來(lái)。 之后的調(diào)用實(shí)際上是調(diào)用緩存數(shù)據(jù)而不是調(diào)用數(shù)據(jù)庫(kù)。
解決這些問(wèn)題的最好辦法是閱讀函數(shù)文檔并且使用一些類(lèi)似 查詢(xún)監(jiān)聽(tīng)器 的東西。
6. 不要在 SQL 查詢(xún)中使用 *
好吧,這更像是一個(gè) MySQL 的問(wèn)題,但我們更傾向于在代碼中編寫(xiě) SQL 語(yǔ)句,所以我說(shuō)這是個(gè)公平的游戲。不管什么情況下,如果你能避免使用通配符,那就不要使用,尤其是當(dāng)你的數(shù)據(jù)庫(kù)有很多字段的時(shí)候。
明確指定你需要的字段,并且只檢索這些字段。這有助于節(jié)省內(nèi)存,保護(hù)數(shù)據(jù),并且能讓事情變得更加清晰明白。
在 SQL 方面,盡可能的了解你可用的函數(shù)并測(cè)試速度。 當(dāng)計(jì)算平均數(shù),求和以及計(jì)算相似的數(shù)字的時(shí)候,使用 SQL 內(nèi)置函數(shù)而不是 PHP 的函數(shù)。 如果你不確定一個(gè)查詢(xún)的速度快慢,測(cè)試一下它并和其他做法進(jìn)行比較,選出最好的那一種。
7. 不要信任用戶(hù)的輸入
信任用戶(hù)輸入并不明智。對(duì)于用戶(hù)輸入,總是需要過(guò)濾,殺毒,轉(zhuǎn)義,校驗(yàn)以及使用回退。 用戶(hù)輸入存在三個(gè)問(wèn)題:我們開(kāi)發(fā)者不可能考慮到所有可能性,經(jīng)常出錯(cuò),存心的惡意輸入。
一個(gè)經(jīng)過(guò)深思熟慮的系統(tǒng)可以防止所有的這些問(wèn)題。 在使用數(shù)據(jù)庫(kù)時(shí),確保使用內(nèi)置的函數(shù),如 filter_var()
,來(lái)檢查合法性,進(jìn)行轉(zhuǎn)義,和其他能做的事。
WordPress 有一堆函數(shù)可以幫到你。可以瞧一瞧這篇文章來(lái)了解
相關(guān)推薦
- RakSmart服務(wù)器成本優(yōu)化策略
- 自媒體推廣實(shí)時(shí)監(jiān)控從服務(wù)器帶寬到用戶(hù)行為解決方法
- 個(gè)人站長(zhǎng)消亡論?從“消失”到“重生”的三大破局路徑
- raksmart法蘭克福云服務(wù)器延遲高嗎?
- 自媒體人搭建直播服務(wù)器使用raksmart優(yōu)化技巧
- 華納云高防服務(wù)器3.6折起低至1188元/月,企業(yè)級(jí)真實(shí)防御20G`T級(jí),自營(yíng)機(jī)房一手服務(wù)器資源
- 選擇站群VPS時(shí)必須關(guān)注的六大核心需求
- RakSmart法蘭克福數(shù)據(jù)中心優(yōu)勢(shì)與適用場(chǎng)景