Post view

insoler網站Mac mini Intel Core i7 2.6GHz伺服器加裝Zend OPcache快取,重新測試PageSpeed網頁開啟速度

關於網頁最佳化的評分,請參考這篇文章:

insoler網站Mac mini Intel Core i7 2.6GHz伺服器主機網頁PageSpeed效能測試

影響網頁開啟速度有許多因素,這些因素都可能會影響網頁的開啟速度:

  • 網站使用的網際網路的速率頻寬。就算你的網頁只有純文字,沒有大量的大型圖片,上傳速度只要64Kbps就非常夠用,但是使用2M/64K的網路來架設網站,網頁開啟速度絕對比100M/100M慢很多!因為這還牽涉到ISP提供2M/64K的線路效能。
  • 防火牆或是IP寬頻分享器、路由器等的封包處理效能。如果你使用的網際網路速率是100M/100M,但是防火牆或是IP寬頻分享器最高只能處理60Mbps的速率,也會導致網路效率變差,只能跑到60M的效能。
  • 網站伺服器主機的CPU性能。由於PHP無法多工、多執行緒執行,所以要求的CPU的時脈,通常是越高越好。使用3GHz處理器架設的網站,網頁開啟速度通常會比1.5GHz處理器快將近2倍。無論CPU是雙核心,或是6核心,結果都一樣。由於PHP執行時不需要大容量記憶體,因此電腦上是只有2GB或是有16GB、64GB記憶體的網頁開啟速度都完全相同。使用Geekbench 4測試電腦效能的話,請選Single-Core Score單核心分數比較高的電腦主機。
  • 使用超高速SSD或是低速SATA III的SSD或是傳統硬碟。就算CPU的速度非常快,但是網站上的所有檔案畢竟還是需要儲存在硬碟上,因此使用超高速SSD或是傳統硬碟,就會影響網頁的開啟速度。
  • 網站伺服器與資料庫伺服器的架設方式。通常使用PHP架設的網站都需要連接MySQL資料庫。最簡單的架設方式當然是把Web Server與SQL Server全部安裝在一台電腦主機上。但如果網站上有很多人使用的話,可能就會需要2台以上主機,一台擔任Web Server,另外一台擔任MySQL Server。
  • 網頁最佳化。隨著網路速度越來越快,純文字的網頁已經幾乎非常少見,如何最佳化網頁上的圖片、JavaScript就變得非常重要。你可以使用類似GTmetrix的網站來測試、分析網頁內容有哪些缺失需要改進。
  • 網頁PHP快取。現代的網站幾乎很少使用純文字網頁,也很少是單純的HTML檔案的網頁,絕大多數都是屬於動態網頁(通常是使用PHP產生HTML網頁),因此網站的主機上,其實並不存在你看到的網站首頁。某些網站的檔案會以 .htm 或是 .html 結尾,但並不表示該網站的主機的硬碟上就有該檔案,很可能是利用Apache提供的 .htaccess 檔案功能將 .php 檔案轉成 .htm 結尾而已。由於動態網頁是靠讀取MySQL資料,再透過PHP程式碼產生的網頁。如果有很多人常常開啟網站首頁,電腦每次都要重新讀取MySQL,重新產生PHP的首頁,就會非常沒有效率,因此利用「快取」來提高網頁的產生速度,就變成很重要的一件事。就算是使用目前最高效能的PHP 7.3,還是需要搭配PHP快取模組一起使用才行。

要分析自己的網站是否最佳化,或是網頁的開啟速度,其實也可以不需要安裝任何外掛程式,只要使用類似GTmetrix的網站,就可以看到從其他地區(GTmetrix是加拿大)開啟網頁的速度(會記錄開啟網頁的時間軸):

只要輸入想要分析的完整網址,全世界的任何網站均可,並沒有限定必須是自己的網站,你也可以分析Apple網站、MSN網站、Facebook網站等。

你可以看到insoler網站在沒有使用Zend OPcache快取的時候,在Fully Loaded Time完全載入網頁的時間是:7.1s秒!會需要花費7秒的主要原因是因為insoler首頁包含了許多照片檔案、圖檔,以及user看不到的JavaScript檔案等。

雖然瀏覽器會快取insoler網站上的圖片、JavaScript檔案等,第二次以後再瀏覽網頁,就不需要花5-7秒的等待時間,但是第一次開啟的速度要花7秒左右,確實是比較慢了一些。

加裝PHP的加裝Zend OPcache快取模組以後,重新測試insoler網頁,得到的Fully Loaded Time完全載入網頁的時間是:5.4s秒!竟然進步了將近2秒!

再重新測試一次,Fully Loaded Time完全載入網頁的時間是:4.9s秒!這個數字已經比沒有使用Zend OPcache快取的時候進步2秒多!可說是有很大的改善!

由於GTmetrix是位於加拿大的網站,從加拿大到insoler網站,除了要經過國際海底電纜,可能還必須經過幾個國家的IPS與路由器,為了測試從加拿大開啟insoler網站需要多少時間,我做了一個最簡單的hello.htm的純文字網頁:

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <p>Hello insoler</p>
 </body>
</html>

再重新測試一次,得到Fully Loaded Time完全載入網頁的時間是:1.7s秒!

那麼,換成PHP產生的動態純文字網頁呢?網頁的開啟速度會變的比較慢嗎?

<? php
echo "hello insoler";

再重新測試一次,得到Fully Loaded Time完全載入網頁的時間是:1.6s秒!我覺的測試的誤差在0.5秒以內,都算是伺服器電腦主機忙碌、網路上的延遲(可能是路由器忙碌,或是網路流量很大,網路封包擁塞),並不是真的PHP的動態純文字網頁比HTML的靜態純文字網頁的開啟速度更快!

點選Waterfall就可以看到載入hello.php網頁的時間軸。你可以看到其實是花了大約1.3秒在等待連接insoler伺服器主機,而不是insoler伺服器主機花1.6秒的時間在開啟最簡單的純文字網頁。

目前是在PHP 5.5.38加裝Zend OPcache快取模組(這是去年使用Homebrew安裝的模組,現在已經無法再使用Homebrew安裝了),如果你使用的是最新的PHP 7.2或是PHP 7.3,同樣需要加裝Zend OPcache快取模組,並做好相關的設定,才能達到提升網頁開啟速度的目的。

蘇言霖 2018/11/16 0 282
Comments
Order by: 
Per page:
 
  • There are no comments yet
Rate
0 votes
Post info
蘇言霖
「超級懶貓級」社群網站站長
2018/11/16 (335 days ago)
Actions