
當我對網站進行小更改並上傳時,這些更改通常需要幾分鐘才能即時反映。在我透過 Google Compute Engine 安裝了新的 Debian 系統後,這種情況才開始發生。
我已經排除了我有快取它的程式碼,但是 PHP 5.5.28 或 Debian 是否有可能快取檔案?我還檢查過以確保它不是瀏覽器,並使用 chrome 選項不在開發人員工具中快取檔案。
答案1
您正在使用 PHP 5.5.28,根據我的經驗,任何從 PHP 5.3 或 5.4 跳到 PHP 5.5 的人都需要了解新的內建功能OPcache(操作快取)預設啟用。
如果您曾經使用過APC(替代 PHP 快取),新的內建 OPcache 的工作原理幾乎相同,並且非常適合複雜程式碼的生產目的,但如果您習慣上傳檔案並立即顯示更改,則預設啟用它可能會困擾您。
這個網站做得很好解釋什麼是 OPcache 以及如何調整它。但如果你還不需要 OPcache,只要像這樣打開你的 PHP ini 檔案;我更喜歡使用nano
但請隨意使用您喜歡使用的任何文字編輯器:
sudo nano /etc/php5/apache2/php.ini
尋找顯示以下內容的行:
opcache.enable=1
只需將該行更改為即可停用它:
;opcache.enable=0
重新啟動 Apache,現在 PHP 5.5 將不再使用 OPcache。老實說,啟用這樣的快取應該是系統管理員的要求,他們了解程式碼如何運作以及伺服器如何反應
如果您的基於 PHP 的網站足夠輕量級,那麼 OPcache 可能有點過分了,實際上並不需要,甚至可能會妨礙您。
但如果你需要 OPcache 但也需要定期更新 PHP 檔案也許調整 OPcache 設定值會有所幫助。預設是這樣的:
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
我在該配置中看到的可能導致預期更新的關鍵是opcache.revalidate_freq
:
檢查腳本時間戳更新的頻率(以秒為單位)。 0 將導致 OPcache 檢查每個請求的更新。
預設值 60 秒很好,但在我看來,將opcache.revalidate_freq
5 秒降低到 5 秒可能是啟用 OPcache 的更好方式,但仍然有一個合理的更新檢查窗口,這樣您就不會被絆倒通過簡單的文件更新。