Laravel頁面靜態化最佳實踐

https://learnku.com/articles/...php

環境

php7.4
nginx1.17
mysql5.7
windows10html

路線

  • 控制器返回視圖時這麼操做
public function test(Request $request) {
        $view =  view('test')->render();
        Storage::disk('local')->put('views/' . $request->path(), $view);
        return $view;
    }
  • nginx配置這麼寫
location / {  
    root D:/wwwroot/demo/storage/app/views;
    index index.html;
    try_files $uri $uri.html @default;
}
location @default {
    root D:/wwwroot/demo/public;
    index index.php;
    try_files $uri $uri/ /index.php$is_args$query_string;
}

這樣就能在第一次訪問時生成相應的靜態網頁,以後再訪問時就會直接返回靜態網頁。mysql

  • 進一步

實現過時刪除、自動更新功能,大概就是獲取views文件夾下的全部文件名,記錄在案,而後按期清除,還能夠主動發出請求觸發更新。另外一個就是無損實現全站靜態化,這須要覆蓋 Foundations/helpers.php 中的 view() 方法,然而這個文件已經被建立自動加載映射了,正常狀況下沒法覆蓋,你能夠安裝 funkjedi/composer-include-files ,它能夠優先自動加載你自定義的php文件,這樣就ok了。nginx

  • 認證狀態

一般須要顯示當前登陸用戶的頭像,靜態化後就不能顯示了?固然能夠。sql

好比,認證後保存用戶數據到瀏覽器,經過js把當前狀態更新到靜態的html上。windows


Laravel通用插件系統,使你的Laravel項目具有熱插拔插件功能!瀏覽器

相關文章
相關標籤/搜索