欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel页面静态化 支持其他各种框架。

laravel页面静态化 支持其他各种框架。

2017-12-14

由于公司业务需要,对官网进行了页面静态化。同时在此记录下方法。
服务器环境: centos 7.3 apache   PHP7.1  框架:laravel5.3 
基本要求:
1.apache rewrite 必须得开启的.
2. .htaccess 重写     

  1.     RewriteCond %{REQUEST_FILENAME} !-f

  2.    RewriteRule ^ index.php [L]

         若是单一入口文件,应该都是有这个配置的,尤其是第一句话:RewriteCond %{REQUEST_FILENAME} !-f   意思是,如果不存在和REQUEST_FILENAME 匹配的文件,才跳转至index.php
3.以laravel为例: 在public文件下创建zixun文件夹,并给777权限。  这种父级目录得人工创建, 因为给public目录 777权限的化过于可怕。
4.上代码:    

  1. //生成静态页方法

  2. function create_static_page($path,$file_name,$content){

  3.   if(is_dir($path)){

  4.    $file_name = handle_file_name($path,$file_name);

  5.    file_put_contents($file_name, $content);

  6.    chmod($file_name,0777);  

  7.   }  

  8.  return $content;

  9. }

  10. //删除静态页方法

  11. function delete_static_page($file){

  12.  if(is_file($file)){

  13.    unlink($file);

  14.  }

  15. }

  16. //清空目录下所有静态页方法

  17. function delete_all_static_page($path){

  18.    $file_path=scandir($path);

  19.    foreach ($file_path as  $value) {

  20.      if($value!='.' &&$value!='..')  

  21.      {  

  22.        delete_static_page(handle_file_name($path,$value));

  23.      }

  24.    }

  25. }

  26. //文件路径处理函数

  27. function handle_file_name($path,$file_name){

  28.  if(substr($path, -1,1)=='/'){

  29.      return $path.$file_name;

  30.    }else{

  31.      return $path.'/'.$file_name;

  32.  }

  33. }

5.方法举例:( laravel的看这里!)
    laravel的视图在渲染输出时的函数     

  1. return view('zixun/article');

这里是直接把渲染好的视图输出了,我们截断它。
换成:

  1. $string = view('zixun/article')__toString();

  2. return create_static_page(public_path().'/zixun',$id.'.html',$string);


意思就是,将渲染好的内容,传给我的 静态页方法来处理。
如果你的文件权限、方法调用什么的都没问题,那在public/zixun 下面应该就生成了对应的html文件。

这样你访问对应的url时,就访问的是静态页的内容了。  例如:  www.slidyy.com/zixun/111.html

6.静态页更新:
    通过删除对应的静态页来实现,因为没有该静态页了,自然访问的就是对应的控制器了。
    这里提供两个方法:
        1. delete_static_page  删除特定的静态页   例如delete_static_page(public_path().'/zixun/111.html');
        2. delete_all_static_page()  删除特定目录下的所有静态页  例如: delete_all_static_page(public_path().'/zixun/');
    


标签: laravel后端开发PHP页面静态化

评论:

旅程 
2018-07-05 15:23
我可以转载这篇文章吗,谢谢了,怕到时候找不到
碧海长天 
2018-07-05 22:37
@旅程:可以的,欢迎转载哈~ 注明来源就好~
旅程 
2018-07-06 08:42
@碧海长天:哈哈,谢谢啦,注明了,https://www.jianshu.com/p/091fbcd9d95a这个
保罗 
2018-01-01 02:03
2018 元旦快乐~
碧海长天 
2018-01-02 11:02
@保罗:元旦没开电脑,回复的有点晚~~~   元旦快乐~
小轲 
2017-12-28 18:40
我发现你站的速度可以飞起来了大佬~
碧海长天 
2018-01-02 11:03
@小轲:额。。估计是阿里云带宽比较足吧  100M 的。。。不过也很烧流量啊


来自 https://www.slidyy.com/post-30.html

普通分类: