我是靠谱客的博主 专注彩虹,最近开发中收集的这篇文章主要介绍Typecho HTML5预加载,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

天下文章一大抄,你通过搜索引擎搜索 HTML5预加载,估计只能找到诸如“ WP实现HTML5预加载”的方法。
不知道的还以为只有WP可以实现HTML5预加载呢~
火狐下引入的预加载使用方法
<link rel="prefetch" href="http://www.example.com/">

文档 http://en.wikipedia.org/wiki/Link_prefetching
谷歌下预加载使用方法
<link rel="prerender" href="http://example.org/index.html">

文档https://developers.google.com/chrome/whitepapers/prerender

代码如下:

    
    
     
     <!–[if IE]
     
     > 
     
     <
     
     script 
     
     src=
     
     "http://html5shiv.googlecode.com/svn/trunk/html5.js"
     
     > 
     
     </
     
     script
     
     > 
     
     <![endif]–
     
     > 
     
     <?php 
    
    
     
     
      
      if
     
     
    
    
     
      ($this->is('
     
     index')): 
     
     ?>
     
     <!-- 页面为首页时 --> 
     
     <
     
     link 
     
     rel=
     
     "prefetch" 
     
     href=
     
     "<?php $this->options->siteUrl(); ?>"
     
     > 
     
     <!-- firefox --> 
     
     <
     
     link 
     
     rel=
     
     "prerender" 
     
     href=
     
     "<?php $this->options->siteUrl(); ?>"
     
     > 
     
     <!-- chrome --> 	
     
     <?php 
    
    
     
     
      
      elseif
     
     
    
    
     
      ($this->is('
     
     post')): 
     
     ?>
     
     <!-- 页面为文章单页时 --> 
     
     <
     
     link 
     
     rel=
     
     "prefetch" 
     
     href=
     
     "<?php $this->permalink() ?>"
     
     > 
     
     <!-- firefox --> 
     
     <
     
     link 
     
     rel=
     
     "prerender" 
     
     href=
     
     "<?php $this->permalink() ?>"
     
     > 
     
     <!-- chrome --> 	
     
     <?php 
    
    
     
     
      
      else
     
     
    
    
     
     : 
     
     ?>
     
     <!-- 页面为其他页时 --> 	
     
     <!-- 啥都木有 --> 	
     
     <?php 
    
    
     
     
      
      endif
     
     
    
    
     
     ; 
     
     ?>
    
    

 

上面的代码有错误。

我仔细查找了国外的一些文档。

例如 客户正在阅读 http://henmang.net/DNSprefetching.cgi ,我们这里认为这是第一篇文章
那么 客户很可能会去阅读 http://henmang.net/html5prefetch.cgi 我们认为这是第二篇文章。

也就是我们post中的上一页下一页。

因此,我们假设当前页面为B,上一页为A,下一页为C

我们需要插入代码
<link rel="prefetch" href="A"> <!-- firefox -->
<link rel="prerender" href="A"> <!-- chrome -->
<link rel="prefetch" href="C"> <!-- firefox -->
<link rel="prerender" href="C"> <!-- chrome -->

那么,在客户访问B页面的时候,浏览器会偷偷的加载 A和C的页面,如果索性客户点击了A和B页面,就是秒开了。。。

但是我并不知道这个功能会不会降低 B页面的速度,如果会降低,显然是没有任何意义的,反而起了反作用。

如果一定要做

首页,预加载 最新一片日志

文章页 ,预加载 上一页和下一页。

因为考虑到效率等问题,做了下舍取,我只在post做预加载。

代码如下,分为2部分

第一部分,将以下代码加入functions.php ,代码来自 http://jakc.net/post/444 有修改

<?php function xmPrevNext($method,$t,$isLink)          {          $xdb = Typecho_Db::get();                switch($method){              case "pre":                  $xrs = $xdb->fetchRow($xdb->select()->from('table.contents')                         ->where('table.contents.created < ?', $t->created)                      ->where('table.contents.status = ?', 'publish')                      ->where('table.contents.type = ?', $t->type)                      ->where('table.contents.password IS NULL')                      ->order('table.contents.created', Typecho_Db::SORT_DESC)                      ->limit(1));                   if(sizeof($xrs)==0){                      switch($isLink){                          case 0:                              echo "这已经是第一篇了亲~";                              break;                          case 1:                              echo "http://henmang.net";  //注意把这里修改为你本人的网址                             break;                      }                   }                  break;              case 'next':                  $xrs = $xdb->fetchRow($xdb->select()->from('table.contents')                         ->where('table.contents.created > ?',$t->created)                      ->where('table.contents.status = ?', 'publish')                      ->where('table.contents.type = ?', $t->type)                      ->where('table.contents.password IS NULL')                      ->order('table.contents.created', Typecho_Db::SORT_ASC)                      ->limit(1));                      if(sizeof($xrs)==0){                      switch($isLink){                          case 0:                              echo "木有下一篇了~";                              break;                          case 1:                              echo "http://henmang.net";  //注意把这里修改为你本人的网址                             break;                      }                   }                  break;          }              if($xrs){              $xrs = $t->filter($xrs);              if($isLink==0){                  echo $xrs['title'];              }else{                  echo $xrs['permalink'];                  }              }          } 

然后在header.php加入

<?php if ($this->is('post')): ?> <!–-[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"> </script> <![endif]–> <link rel="prefetch" href="<?php xmPrevNext("pre",$this,1); ?>"> <!-- firefox --> <link rel="prefetch" href="<?php xmPrevNext("next",$this,1); ?>"> <!-- firefox --> <link rel="prerender" href="<?php xmPrevNext("pre",$this,1); ?>"> <!-- chrome --> <link rel="prerender" href="<?php xmPrevNext("next",$this,1); ?>"> <!-- chrome --> <?php endif; ?>

如果你一定要在首页预加载第一篇日志,可以试试下面的代码,很蛋疼

<!–-[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"> </script> <![endif]–> <?php if ($this->is('index')): ?><!-- 页面为首页时 --> <link rel="prefetch" href="<?php $this->widget('Widget_Contents_Post_Recent', 'pageSize=1')->parse('{permalink}'); ?>"> <!-- firefox --> <link rel="prerender" href="<?php $this->widget('Widget_Contents_Post_Recent', 'pageSize=1')->parse('{permalink}'); ?>"> <!-- chrome --> 	<?php elseif ($this->is('post')): ?><!-- 页面为文章单页时 --> <link rel="prefetch" href="<?php xmPrevNext("pre",$this,1); ?>"> <!-- firefox --> <link rel="prefetch" href="<?php xmPrevNext("next",$this,1); ?>"> <!-- firefox --> <link rel="prerender" href="<?php xmPrevNext("pre",$this,1); ?>"> <!-- chrome --> <link rel="prerender" href="<?php xmPrevNext("next",$this,1); ?>"> <!-- chrome --> 	<?php else: ?><!-- 页面为其他页时 --> 	<!-- 啥都木有 --> 	<?php endif; ?>

最后

以上就是专注彩虹为你收集整理的Typecho HTML5预加载的全部内容,希望文章能够帮你解决Typecho HTML5预加载所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部