最近感觉typecho博客打开速度慢了不少,测试来看均值基本都在3秒以上,因为博客上有不少的CSS和JS加载速度也就慢了下来,并且本博客没有做图站分离,都是放在一起的,速度确实较慢。
于是给首页做了个静态HTML,把首页缓存了下来,首页打开速度确实提升了数倍,需要的朋友也可以试试。
这里提供两个PHP代码脚本,一个是不需要密码的,一个是需要密码的;
首先在网站根目录新建一个php文件,文件命名为:jingtai.php
然后在其中写入需要的代码(不需要密码和需要密码的选择其中一个即可)
不需要密码的PHP脚本
<?php
$nowtime=time();
$pastsec = $nowtime - $_GET["t"];
if($pastsec<600)
{
exit; //10分钟更新一次,时间可以自己调整
}
ob_start(); //打开缓冲区
include("index.php");
$content = ob_get_contents(); //得到缓冲区的内容
$content .= "\n<script language=javascript src=\"jingtai.php?t=".$nowtime."\"></script>"; //加上调用更新程序的代码
file_put_contents("index.html",$content);
if (!function_exists("file_put_contents"))
{
function file_put_contents($fn,$fs)
{
$fp=fopen($fn,"w+");
fputs($fp,$fs);
fclose($fp);
}
}
?>
需要密码的PHP脚本
<?php
/**
* 首页静态化脚本
*/
ini_set( 'date.timezone', 'PRC' );
/* 缓存过期时间 单位:秒 */
$expire = 600;
/* 主动刷新密码 格式:https://你的域名/jingtai.php?password=123456 */
$password = '123456';
$file_time = @filemtime( 'index.html' );
time() - $file_time > $expire && create_index();
isset( $_GET['password'] ) && $_GET['password'] == $password && create_index();
/**
* 生成 index.html
*/
function create_index()
{
ob_start();
include( 'index.php' );
$content = ob_get_contents();
$content .= "\n<!-- Create time: " . date( 'Y-m-d H:i:s' ) . " -->";
/* 调用更新 */
$content .= "\n<script language=javascript src='jingtai.php'></script>";
ob_clean();
$res = file_put_contents( 'index.html', $content );
if ( $res !== false )
{
die( 'Create successful' );
}
else
{
die( 'Create error' );
}
}
保存之后退出即可!
注意:如果使用的宝塔面板,还要在后台网站设置-默认文档-将index.html的排序上调至第一位
然后在浏览器中打开PHP脚本链接即可
打开链接后会在网站根目录下生成一个index.html的静态文件,首页静态化也就完成了;
不需要密码脚本的链接:https://你的域名/jingtai.php
需要密码脚本的链接:https://你的域名/jingtai.php?password=123456
查看是否生效,浏览器中重新打开你的网站首页,右键查看源代码
不需要密码的脚本
在最后一行如果有<script language=javascript>...之类的字眼,说明你访问的就是index.html的页面
需要密码的脚本
在最后一行会有显示最后一次更新时间
<!-- Create time: 2021-01-23 00:33:41 -->
<script language=javascript src='jt_index.php'></script>
给大家看看速度对比:
我们可以看到数据差距十分大,静态化前银狐笔记首页响应速度平均5秒,静态化之后首页速度变成了1秒。
网站测速工具:https://www.boce.com/tool
在这里附上银狐自己的缓存首页的代码:
<?php
/**
* 首页静态化脚本
*/
ini_set( 'date.timezone', 'PRC' );
/* 缓存过期时间 单位:秒 */
$expire = 600;
/* 主动刷新密码 格式:https://你的域名/huancun.php?password=ityinhu.com */
$password = 'ityinhu.com';
$file_time = @filemtime( 'index.html' );
time() - $file_time > $expire && create_index();
isset( $_GET['password'] ) && $_GET['password'] == $password && create_index();
/**
* 生成 index.html
*/
function create_index()
{
ob_start();
include( 'index.php' );
$content = ob_get_contents();
ob_clean();
$res = file_put_contents( 'index.html', $content );
if ( $res !== false )
{
die( '生成首页成功' );
}
else
{
die( '生成首页失败' );
}
}
可以看到银狐把调用的script去掉了,那么十分钟更新一次就不会生效了,我们可以设置个定时任务,让他每十分钟生成一次即可!