I'm starting to provide Chinese / English versions of some posts, switch with the Language menu above. 我开始提供部分文章的中文、英文翻译,请使用顶部语言菜单切换。

Typecho 主题性能优化和缓存

为了实现 Lightbox、代码高亮等功能,我在我的博客主题中写了一些后处理代码,对 Typecho Markdown 输出后的 HTML 代码再进行一层处理。但是因为我的博客历史文章较多,我在不同时期也用了不同的编辑器(WordPress 编辑器,百度 UEditor 等等),为了尽可能保证历史文章也能正常显示,我的处理逻辑比较复杂。再加上我用的廉价 VPS 性能本就不怎么样,相应的网页加载时间也较长。我在 nginx 配置中添加了这样一行,以在 HTTP 头中输出网页在服务器端处理的用时:add_header LT-Latency $request_time;最初,这个值是 0.25 左右,代表着每个网页需要在服务器端处理 250ms 之久。于是,我在大概一年前(2018 年 3 月 11 日,《大幅优化了博客主题性能》)大改了一轮后处理逻辑,修改点大致如下:原先,为了对应历史文章代码,我使用多条正则表达式一条条进行匹配、替换。我在修改时将有些正则表达式整合成一条,并且直接在数据库中改了一些文章的原始 HTML 代码,...
插图

CommentToMail 修改版

最近突然发现本来每天一封的自建贴吧签到系统的邮件突然没有了,但是贴吧还是正常签到。上 Mailgun 界面一看,状态全线飘红:日志里一大排发往我自己 Outlook 邮箱的退信,比如:看提示是 Mailgun 的整个 AS 都被 Outlook 拉黑了。这下子是完全没法用了。好消息是,有许多和 Mailgun 提供类似服务的邮件服务商,例如 SendGrid。我很快在他们网站上注册了一个账号,并且开启了 SMTP,把我的贴吧签到、NextCloud 等都接了进去,非常顺利。坏消息是,我的博客用的是我专门给 Mailgun 写的 CommentGun,需要修改一下才能接到 SendGrid 上。本来我可能修改一下插件,然后又能出一个 CommentGrid 之类的插件,但是每家邮件服务商的 API 都不一样。如果这些服务商轮着被 Outlook 屏蔽…… 画美不看。另一个好消息是,这些邮件服务商普遍支持 SMTP 发信。这意味着我可以用 CommentToMail。坏消息是,这个插件年久失修,在不少情况下会 GG(例如网站开了 SSL,...

基于 Mailgun 的 Typecho 评论邮件提醒插件

很多时候,在 WordPress、Typecho 等自建评论系统的网站中回复,只能靠自己不断访问来确定自己的评论有没有被别人回复。然而,对于大多数人来说这样做是非常麻烦的。博主解决问题的常用方法,就是安装邮件提醒插件。当一名评论者的评论被回复,就会有邮件提醒评论者。Typecho 上使用最广泛的插件是 CommentToMail,最早由 DEFE 开发,后来由 Byends Upd 接手。该插件通过常用的 PHP Mail,SendMail 或者 SMTP 来发送邮件。但是,比起以前的注册一个邮箱来发提醒邮件,现在博主们也开始使用 Mailgun 之类的邮件平台。这类邮件平台提供 API 发信功能,不需要再进行复杂的 SMTP 发信设置,也不需要繁杂的处理代码。我就对这个插件进行修改,让它通过 Mailgun API 而不是 SMTP 发送邮件。GitHub 项目地址:https://github....

Typecho 显示评论者国家和浏览器

Typecho 由于插件稀少,一直没有找到显示评论者国家和浏览器的插件,所以只好自力更生了。代码修改自 WordPress 插件 Show UserAgent,下载页面:https://wordpress.org/plugins/show-useragent/前提是你的主题使用了自定义评论代码而不是 Typecho 默认的评论显示代码,一般符合要求的主题的 comments.php 或者 functions.php 中会有如下代码:<?php function threadedComments($comments, $options) { //blablabla?>下载 Show UserAgent 插件解压,把里面的 flags 文件夹改名成 country,browsers 文件夹改名成 browser,ip2c 文件夹改名成 lib,上传到服务器上你的主题文件夹。(其实不改也可以,但是我是按照个人习惯这么改的,你也可以修改下面代码的路径)在主题的 functions.php 中插入这么长一串代码:<?php /* 地理位置判断 */ ?><?php function CID_get_country($ip) { require_once(dirname(__FILE__).'/lib/ip2c.php')...
插图

【有生之年】Typecho 0.9 Alpha 终于发布了

昨天下午回到家,打开 feedly,看到小蒋博客上有篇 Typecho 0.9 的文章。啥,Typecho 居然在有生之年更新了!?果断打开 Typecho 官网,居然看到了 TE 那个简洁的默认主题。我记得以前官网不是长这样。发布文章上来就一句话 “是的,你没有进错网址,目前这个简陋的地方确实是 Typecho 的官方网站”。。。于是我马上下载、更新、安装。更新方法很简单,登上 FTP 删掉 admin、var 目录和 index.php,把 0.9 版本的这几个文件传上来,然后到后台更新数据库就行。打开登录页面,我瞬间觉得高端大气上档次。据说 TE0.9 增加了 Markdown 编辑器,要到个人面板开启。虽然不用,但是还是看一眼。个人面板也是高端大气上档次啊。文章编辑界面。和 WordPress 有点相像。HTML5 的图片上传,终于告别 Flash 了。还支持拖放呢。不管怎么说,一年之后,TE 终于有了动静,接下来就是等 TE 完善了。...

PHP 网页的 HTML 压缩

<body id="wordpress-org" class="home blog"><div id="header"> <div class="wrapper"> <h1>[WordPress.org ](http://cn.wordpress.org/)</h1><h2 class="rosetta">[China &#31616;&#20307;&#20013;&#25991; ](http://cn.wordpress.org/)</h2> <div style="clear:both"></div><ul> <li><a href='/' title='&#39318;&#39029;' class="current">&#39318;&#39029; </a></li> <li><a href='http://zh-cn.forums.wordpress....