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

WBOY
Freigeben: 2016-06-21 08:52:25
Original
1532 Leute haben es durchsucht

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
    Nach dem Login kopieren
  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;    }}?> 
    Nach dem Login kopieren
  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;    }}?> 
    Nach dem Login kopieren
  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"  
    Nach dem Login kopieren
  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 );
    Nach dem Login kopieren
  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 --> 
    Nach dem Login kopieren

    或者

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

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

注意事项

  1. WP-PostViews插件的文章浏览统计特性失效,参考 通过Ajax手动解决WordPress WP-PostViews不计数的问题中的方法,在页面 前增加如下代码。
    <?php if (is_singular()) : ?>    <!-- ajax post view -->    <script type="text/javascript">        $.ajax({            url: "<?php echo get_site_url(). '/wp-admin/admin-ajax.php?>'?>",            data: {                "postviews_id": "<?php the_ID(); ?>",                "action": "postviews",                "_": new Date().getTime()            }        });    </script><?php endif; ?>
    Nach dem Login kopieren
  2. pingback失效,在当前博客主题的header.php中,css引用前增加如下代码。
    <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
    Nach dem Login kopieren

参考资料

  • WordPress静态化插件SAE版
  • wordpress的缓存插件cos-html-cache的源码解读
  • wordpress 中使用自带 admin-ajax.php
  • wordpress自带admin-ajax请求ajax太慢
  • 通过Ajax手动解决WordPress WP-PostViews不计数的问题
  • 【WordPress SAE修改版】 WordPress on SAE 更新至 4.1
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage