Home  >  Article  >  Web Front-end  >  基于cos-html-cache实现WordPress页面纯静态化至KVDB_html/css_WEB-ITnose

基于cos-html-cache实现WordPress页面纯静态化至KVDB_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 08:52:251532browse

Jackie在SAE上搭建了博客,起初使用了SAE默认的Wordpress 3.4.1,版本实在太低,作为PHP盲,只好忍了。

后来浏览网站时无心看到了 【WordPress SAE修改版】 WordPress on SAE 更新至 4.1,文章中提供了Wordpress 4.1 SAE改进的下载链接,以及升级方法,简单明了,于是Jackie的博客升级为了4.1版本。

前几天,Jackie在查阅资料时,不小心看到了 WordPress静态化插件SAE版, 于是不安分起来,参照文章中介绍的方法折腾了半天,终于搞定了静态化。

博客静态化的操作步骤

  1. 从 cos-html-cache插件官网下载插件,当前最新版本为2.7.4。将插件解压,并上传压缩包内的文件上传至wp-content/plugins/cos-html-cache内,目录内的文件布局如下:
    common.js.phpcos-html-cache.phpcosbeta-zh_CN.mocosbeta-zh_CN.poreadme-chs.txtreadme.txt
  2. 在插件目录下增加index.php文件,内容如下
    <?php define("SUMMETA","<! --this is the first view page created at ".date("Y-m-d H:i:s")." by JackieAtHome index.php -->"); $kv = new SaeKV(); $kv->init(); $sitemap = $kv->get($_SERVER['SCRIPT_URI']."index.html"); if ($sitemap) {    header('Content-type:text/html; charset=utf-8');    echo $sitemap; }else{    echo fetchUrl($_SERVER['SCRIPT_URI']).SUMMETA; } function fetchUrl($url){    $ch=curl_init();    curl_setopt($ch, CURLOPT_AUTOREFERER,0);    curl_setopt($ch, CURLOPT_REFERER, 'staticindex');    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $ret=curl_exec($ch);    curl_close($ch);    if ($ret) {        return $ret;    }else{        return false;    }}?> 
  3. 在插件目录下增加static.php,内容如下
    <?php define("SUMMETA","<! --this is the first view page created at ".date("Y-m-d H:i:s")." by JackieAtHome static.php  -->"); $kv = new SaeKV(); $kv->init(); $sitemap = $kv->get($_SERVER['SCRIPT_URI']); if ($sitemap) {    header('Content-type:text/html; charset=utf-8');    echo $sitemap; }else{    echo fetchUrl($_SERVER['SCRIPT_URI']).SUMMETA; } function fetchUrl($url){    $ch=curl_init();    curl_setopt($ch, CURLOPT_AUTOREFERER,0);    curl_setopt($ch, CURLOPT_REFERER, 'static');    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $ret=curl_exec($ch);    curl_close($ch);    if ($ret) {        return $ret;    }else{        return false;    }}?> 
  4. 修改SAE的config.yaml,增加rewrite规则,内容如下
    name: app_nameversion: app_versionhandle:  - rewrite:  if ( %{REQ:REFERER} != "static" && %{REQUEST_URI} ~ "html$" ) goto "wp-content/plugins/cos-html-cache/static.php"  - rewrite:  if ( !is_dir() && !is_file()) goto "index.php?%{QUERY_STRING}"  - rewrite:  if ( path ~ "/(\s*)$" && %{REQ:REFERER} != "staticindex" ) goto "wp-content/plugins/cos-html-cache/index.php"  
  5. 修改cos-html-cache.php,使用SaeKV对象来保存、读取数据,如下是Patch
    Index: cos-html-cache.php===================================================================--- cos-html-cache.php  (revision 27)+++ cos-html-cache.php  (revision 28)@@ -84,17 +84,21 @@    }    if ( !strstr( strtolower($Content), '</html>' ) ) return;+   $kv=new SaeKV();+   $kv->init();+   $kv->set($path, $Content);+       //if sql error ignore...-   $fp = @fopen( $path , "w+" );-   if( $fp ){-       @chmod($path, 0666 ) ;-       @flock($fp ,LOCK_EX );+//     $fp = @fopen( $path , "w+" );+//     if( $fp ){+//         @chmod($path, 0666 ) ;+//         @flock($fp ,LOCK_EX );-       // write the file。-       fwrite( $fp , $Content );-       @flock($fp, LOCK_UN);-       fclose($fp);-    }+//         // write the file。+//         fwrite( $fp , $Content );+//         @flock($fp, LOCK_UN);+//         fclose($fp);+//      } } /* read the content from output buffer */@@ -137,16 +141,27 @@    elseif( SCRIPT_URI == CosSiteHome) {// creat homepage-       $fp = @fopen( CosBlogPath."index.bak" , "w+" );-       if( $fp ){-           @flock($fp ,LOCK_EX );-           // write the file。-           fwrite( $fp , $buffer.COSMETA );-           @flock($fp, LOCK_UN);-           fclose($fp);-        }-       if(IS_INDEX)-           @rename(CosBlogPath."index.bak",CosBlogPath."index.html");+       +       $kv=new SaeKV();+       $kv->init();+       if (IS_INDEX) {+           $kv->set(CosBlogPath."index.html", $buffer.COSMETA);+       }+       else {+           $kv->set(CosBlogPath."index.bak", $buffer.COSMETA);+       }+       +               +//         $fp = @fopen( CosBlogPath."index.bak" , "w+" );+//         if( $fp ){+//             @flock($fp ,LOCK_EX );+//             // write the file。+//             fwrite( $fp , $buffer.COSMETA );+//             @flock($fp, LOCK_UN);+//             fclose($fp);+//          }+//         if(IS_INDEX)+//             @rename(CosBlogPath."index.bak",CosBlogPath."index.html");    }    else        CreateHtmlFile($_SERVER['REQUEST_URI'],$buffer.COSMETA );
  6. 登录博客后台,在 设置-> 固定链接,修改URL格式为 /archives/%post_id%.html,即在末尾增加 .html。
  7. 登录博客后台,打开 插件页面,找到 cos-html-cache插件,点击启用。
  8. 重新刷新首页或者文章页面,查看页面源码,如果页面底部出现如下代码,

    <! --this is the first view page created at 2016-04-01 22:35:13 by JackieAtHome index.php --> 

    或者

    <! --this is the first view page created at 2016-04-01 22:35:13 by JackieAtHome static.php -->

    恭喜你,博客页面静态化成功。

注意事项

  1. WP-PostViews插件的文章浏览统计特性失效,参考 通过Ajax手动解决WordPress WP-PostViews不计数的问题中的方法,在页面
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn