美文网首页
PHP页面静态化02

PHP页面静态化02

作者: Amy1234567 | 来源:发表于2020-03-27 20:54 被阅读0次

    PHP如何实现页面纯静态化

    基本方式

    1. file_put_contents()函数: 将一个字符串写入文件

    2. 使用PHP内置缓存机制实现页面静态化 -- output_buffering

    aaa


    如何触发系统生成纯静态化页面

    1. 页面添加缓存时间

    用户请求页面 > 页面时间(缓存时间)是否过期 > 是 > 动态页面并生成一份新的静态页面 或者 > 否 > 获取静态页面

    2. 手动触发方式

    重新请求数据库数据,刷新页面

    3. crontab定时扫描程序

    linux系统服务器中的一个工具,设置定时执行相关的内容

    crontab -e

    * /5 * * * * php /data/static/index.php    //每5分钟执行一次

    静态化页面中如果想加载动态的内容如何处理。即,局部纯静态

    使用ajax请求

    伪静态

    把动态的url地址转换为静态的url地址,通过这种方式访问的页面还是动态页面

    1. 让url美观

    2. 让搜索引擎收录页面内容

    PHP处理伪静态

    通过正则表达式分析URL地址,进行解析

    $_SERVER['path_info']

    注:nginx服务器默认情况下不支持path_info模式,需要配置

    preg_match(string$pattern,string$subject [,array&$matches[,int$flags = 0[,int$offset = 0]]] ): 搜索subject与pattern给定的正则表达式的一个匹配

    filemtime(string$filename):   本函数返回文件中的数据块上次被写入的时间,也就是说,文件的内容上次被修改的时间

    WEB服务器rewrite配置

    apache下rewrite配置

    1. 虚拟域名配置

    1). httpd.conf文件中开启相关模式

          LoadModule rewrite_module modules/mod_rewrite.so

          Include conf/extra/httpd-vhosts.conf (加载httpd.conf文件时会导入httpd-vhosts.conf文件,文件中有虚拟域名的配置)

    2). httpd-vhosts.conf文件增加相关域名

         <VirtualHost *:80>

             ServerAdmin webmaster@dummy-host.example.com

             DocumentRoot "${SRVROOT}/docs/dummy-host.example.com"  (文件地址)

             ServerName dummy-host.example.com (虚拟域名)

             ServerAlias www.dummy-host.example.com

             ErrorLog "logs/dummy-host.example.com-error.log"  (错误日志)

             CustomLog "logs/dummy-host.example.com-access.log" common

          </VirtualHost>

    3). 在hosts文件中配置域名

    2. httpd_vhosts.conf配置文件配置相关信息

    在配置好的虚拟域名中加入,开启rewrite引擎,建立规则

    RewriteEngine on

    RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1

    如果以上信息配置完毕,当项目中存在和伪静态相同url的纯静态html文件时,该url会访问伪静态指向的动态文件,为防止这种情况发生,可以在虚拟域名配置中加入以下:

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

    即如果服务器存在该目录或文件,则直接访问已存在的目录或文件,不存在时,访问伪静态

    完整配置如下

         <VirtualHost *:80>

             ServerAdmin webmaster@dummy-host.example.com

             DocumentRoot "${SRVROOT}/docs/dummy-host.example.com"  (文件地址)

             ServerName dummy-host.example.com (虚拟域名)

             ServerAlias www.dummy-host.example.com

             ErrorLog "logs/dummy-host.example.com-error.log"  (错误日志)

             CustomLog "logs/dummy-host.example.com-access.log" common

             RewriteEngine on

             RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d

             RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

             RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1

          </VirtualHost>

    nginx下rewrite配置

    待学...

    相关文章

      网友评论

          本文标题:PHP页面静态化02

          本文链接:https://www.haomeiwen.com/subject/iqiruhtx.html