https://learnku.com/articles/...
环境
php7.4
nginx1.17
mysql5.7
windows10
路线
- 控制器返回视图时这么操作
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;
}
这样就能在第一次访问时生成相应的静态网页,之后再访问时就会直接返回静态网页。
- 进一步
实现过期删除、自动更新功能,大概就是获取views文件夹下的所有文件名,记录在案,然后定期清除,还可以主动发出请求触发更新。另一个就是无损实现全站静态化,这需要覆盖 Foundations/helpers.php
中的 view()
方法,然而这个文件已经被创建自动加载映射了,正常情况下无法覆盖,你可以安装 funkjedi/composer-include-files
,它可以优先自动加载你自定义的php文件,这样就ok了。
- 认证状态
通常需要显示当前登录用户的头像,静态化后就不能显示了?当然可以。
比如,认证后保存用户数据到浏览器,通过js把当前状态更新到静态的html上。
Laravel通用插件系统,使你的Laravel项目具备热插拔插件功能!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。