安和の小窝

面硬加咸蔬菜加倍蒜末和油多多!

2020年01月25日

提升Typecho的访问速度

对首屏速度优化的一些经验。

GZIP压缩

无论是宝塔还是appnode,都自带了gzip压缩这一功能,相对于appnode,前者明显将gzip的设置藏的更深一些,各位可以在软件商店-nginx-性能调整中找到gzip的相关设置。

在这里

appnode的话我就没有办法附图了,毕竟我现在已经转战宝塔了。

首页静态化

我放弃了redis等缓存拓展,选择了最粗暴的首页静态化脚本。
请将以下代码新建粘贴到cache.php文件中即可

<?php
/**
 * 首页静态化脚本
 * Author: Yusure
 * Blog: yusure.cn
 */
ini_set( 'date.timezone', 'PRC' );
 
/* 缓存过期时间 单位:秒 */
$expire = 86400;
/* 主动刷新密码  格式:http://test.com/build_index.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='cache.php'></script>";
    ob_clean();
    $res = file_put_contents( 'index.html', $content );
    if ( $res !== false )
    {
        die( 'Create successful' );
    }
    else
    {
        die( 'Create error' );
    }
}

作者来源我就不再次注明了,代码中已经体现。

分离首页和文章CSS和JS

有利有弊,会小幅度降低进入文章时的访问速度,但却可以大幅度提升首屏速度。
举个例子,将灯箱,jQuery,文章排版css都单独列出来,然后在文章页面单独引用。
假设A主题的footer.php在首页引入了jQuery和灯箱,代码高亮等功能的样式文件,复制footer.php的原内容,再新建一个footer2.php,将上述内容都粘贴到这里,然后再回到footer.php删除jQuery和灯箱,代码高亮等的调用即可。
关于分离文章排版的css,这个其实很有难度的,但大部分作者会留有注释,或者单独一个部分是文章排版,如果是堆在一起的那就麻烦死了,除非真的很喜欢这个主题也想提升速度建议不要进行这项操作。

P.S 小白如何找到哪些是关于文章排版的内容呢?
一是看作者标的名字,二是通过修改CSS看看对排版的影响,当然后者是很傻的一种方式啦,使用chrome自带的功能会相对好些。

缩略图存至云存储

所有缩略图直接扔到七牛云存储,嫌麻烦的可以试试Typecho的七牛插件。

样式文件存至云存储

同上,部分主题支持了该功能,具体的操作可以看看以前这篇
Typecho优化【主题】

DNS预加载

使用DNS Prefetching也就是dns预加载 直接使用link标签即可

 <link rel="dns-prefetch" href="这里改成云存储地址等"> 

简化首页输出内容

在index.php中找到

<?php $this->excerpt(200, '...'); ?>

把200改成80-150#字太少看着别扭 或者直接删掉这段 不输出摘要
当然,有些主题是默认全文输出的,比如我现在正在用的这个,记得要善用标签奥。

套CDN

说完本机优化,就该说说CDN这些了。
一方面是因为本机是国内小水管,一方面因为怕被打,最后还是选择了套个CDN。
经过我个人测试之后使用七牛CDN的延迟,访问速度,都跟本机速度相差不大,有时候还会更快。
(仅是我这里快啦,之后被告知他们进去都要好几秒,所以要善用全国测速啊hhh)

更好的解析服务

我个人选择的是DNSPod的解析服务,毕竟,9元一年的个人专业版太香了(不买也可以用

增大TTL值

可以减少域名的解析时间~不过太大的话等你换IP的时候就要等很久了...

P.S 你解析的时候可以看到它,不知道是什么东西的话可以去百度看看。

评论卡

评论区

已有 4 条评论

  1. ice
    ice
    5月27日

    哭...本来站点DOMContentLoaded只要820ms(HK直连),但是流量太贵了(1.1港币/GB),所以套了CF...现在要2s以上了....

    回复

    1. 安和
      安和
      5月28日

      我之前有段时间用的就是CF,按照上面说的弄完首屏速度在500-800ms
      CF可以根据不同运营商自选节点的,速度能快不少

      回复

  2. ventoso
    ventoso
    3月6日

    大佬我more标签无用啊

    回复

    1. 安和
      安和
      3月6日

      用编辑器自带的按钮就行~

      回复