wordpress 不使用插件 实现 页面静态化


原文链接:http://www.51ask.org/article/366

 

 

wordpress 不使用插件 实现 页面静态化

 
 
 
功能:
首次访问页面会生成静态页面,可以设定生成静态文件时间,超过指定时间重新生成。
 
修改项目入口文件 index.php( 提前备份):
 
function is_mobile(){

		$regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
		$regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
		$regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";    
		$regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
		$regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
		$regex_match.=")/i";        
		return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));

	}

    $requestUri = '';
    if (isset($_SERVER['REQUEST_URI'])) { #$_SERVER["REQUEST_URI"] 只有 apache 才支持,
        $requestUri = $_SERVER['REQUEST_URI'];
    } else {
        if (isset($_SERVER['argv'])) {
            $requestUri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
        } else if(isset($_SERVER['QUERY_STRING'])) {
            $requestUri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
        }
    }
    $scheme = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
    $protocol = strstr(strtolower($_SERVER["SERVER_PROTOCOL"]), "/",true) . $scheme;
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
    # 获取的完整url
    $_fullUrl = $protocol . "://" . $_SERVER['SERVER_NAME'] . $port . $requestUri;
		
	$staticDir = 'static/';

	if(is_mobile()) {
		$suffix = 'mobile';
	} else {
		$suffix = 'pc';
	}
	$fileDir = $staticDir.md5($_fullUrl).'_'.$suffix.'.html';

	//如果生成静态文件在1小时内,直接使用静态文件,否重新生成
	
	if (file_exists ( $fileDir ) && time () - filectime ( $fileDir ) < 3600) {

		include $fileDir;
	} else {
		ob_start ();
		if(file_exists ( $fileDir ))unlink($fileDir);
		define ( 'WP_USE_THEMES', true );
		/**
		 * Loads the WordPress Environment and Template
		 */
		require (dirname ( __FILE__ ) . '/wp-blog-header.php');
		$html = ob_get_contents ();
		$path = $fileDir;
		$fp = fopen($path,"w+");
		flock($fp, LOCK_EX) ;
		fwrite($fp,$html);
		flock($fp, LOCK_UN);
		fclose($fp);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WordPress静态插件,感觉寻找这样插件的人不在少数,人们都说WordPress非常消耗资源,所以,希望有这样的文件。与 WP-Cache 相同,可以通过缓存来提高大负载下WordPress的性能。WP Super Cache 相比 WP-Cache 最大的改进,在于加入了 Super Cache 这一环节。部分页面会根据一定的规则被缓存为 SuperCache,而这个 SuperCache 实质上就是页面本身。通过 Apache mod_rewrite 重定向直接访问这些静态文件,理论上可以获得更好的性能。 WP-Super-Cache插件安装: 下载WP-Super-Cache插件,然后上传插件到/wp-content/plugins/文件夹。 到wp管理后台插件页面激活插件,激活后插件后,它会出现红色警告,这时需要您在wp-config.php文件里加入如下代码:define('WP_CACHE', true); 在后台的管理页面的Setting-->WP-Super-Cache,对这个插件进行相关的设定,进入这个页面时,在上方它会提示您,让您把wp-content的权限设置为755,设置好后,你就会看到如下图: 上图中三个选项,默认情况下,WP Super Cache 是没有开启的,所以在这里选择下,需按则第一个,就是 Super Cache,缓存为静态文件,如果第二种情况呢,则和 WP-Cache 一致,除了图中的这些选项外,页面中还有其它选项,不能一一截图,简单介绍下: Proudly tell the world your server is Digg proof! (places a message in your blog’s footer) 这个是说在你的 footer 显示一条信息告诉读者该博客已经缓存了,一般不要这样做。 Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.) 这个是说发布新日志的时候清理所有缓存,这个肯定不能这么干了。 Cache Contents 这里显示你博客缓存文件和过期文件的数量,你可以手工删除缓存文件和过期文件,因为 WP Super Cache 有垃圾回收机制,所以这里不帮不用手工删除,如果当你测试某个插件,看不到效果的时候,如果确定是缓存的原因,你可以到这里手工删除测试下。 Expiry Time and Garbage Collection 过期时间和垃圾收集,这里主要设置缓存文件过期时间,和多久删除一次过期的缓存文件。个人建议:一般缓存时间设置为1天(86400)左右,缓存删除时间为1个小时一次。 Accepted filenames, rejected URIs 这里设置一些链接不需要缓存,并且可以设置特例。 Rejected User Agents 这里设置某些 User Agents 来访问的时候不会缓存。比如 Google 和百度爬虫等。 Lock Down 一般情况下,某篇日志如果有了新留言,就会更新缓存文件,不过这篇日志是否已经到了缓存时间,但是在某种情况,你预料到你的博客可能会有很大流量和留言,候重复更新缓存文件可能并不是很好的选择,速度反而更慢,这个时候你就可以锁定缓存文件,新留言不再更新缓存日志。 Cache Plugins 缓存插件还支持附加插件,比如作者自己就提供一个插件:No Adverts for Friends,不对朋友显示广告。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值