在使用Typecho时,难免会遇到有些模板或插件使用了cdn.jsdelivr.net的地址,但是这也会导致他在国内加载奇慢,甚至加载失败,影响使用体验。
当然,此方法适用于几乎一切php程序,也可以用于替换gravatar等国内不方便使用的程序为镜像源。
提一嘴,我前段时间自己建了一个gravatar镜像站:https://tencent.com.kg/avatar
这里使用的jsdeliver镜像源是:jsd.cdn.zzko.cn。
上代码
前台
注意⚠️原始地址的空格请注意去掉 因为我网站会自动替换掉地址
index.php
我将一些与文章无关的魔改删除了,因此可能看起来比较别扭。但是他能用,那就不管了。
如果想知道我改了什么,可以看看其他文章。
<?php
/**
* Typecho Blog Platform
*
* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
* @license GNU General Public License 2.0
* @version $Id: index.php 1153 2009-07-02 10:53:22Z magike.net $
*/
// 开始加入缓冲区
ob_start();
/** 载入配置支持 */
if (!defined('__TYPECHO_ROOT_DIR__') && !@include_once 'config.inc.php') {
file_exists('./install.php') ? header('Location: install.php') : print ('Missing Config File');
exit;
}
/** 初始化组件 */
\Widget\Init::alloc();
/** 注册一个初始化插件 */
\Typecho\Plugin::factory('index.php')->begin();
/** 开始路由分发 */
\Typecho\Router::dispatch();
/** 注册一个结束插件 */
\Typecho\Plugin::factory('index.php')->end();
// 获取输出缓冲区的内容
$output = ob_get_contents();
// 清空缓冲
ob_end_clean();
// 压缩
$compressedOutput = compressHtml($output);
// 输出压缩后的代码
echo $compressedOutput;
function compressHtml($html)
{
$compressedHtml = str_replace('https://cdn.jsdelivr .net/', 'https://jsd.cdn.zzko.cn/', $html);
return $compressedHtml;
}
后台
admin/header.php
我也忘了有没有修改,看着办就是了。
<?php
if (!defined('__TYPECHO_ADMIN__')) {
exit;
}
// 开始加入缓冲区
ob_start();
$header = '<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'normalize.css', true) . '">
<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'grid.css', true) . '">
<link rel="stylesheet" href="' . $options->adminStaticUrl('css', 'style.css', true) . '">';
/** 注册一个初始化插件 */
$header = \Typecho\Plugin::factory('admin/header.php')->header($header);
?><!DOCTYPE HTML>
<html>
<head>
<meta charset="<?php $options->charset(); ?>">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title><?php _e('%s - %s - Powered by Typecho', $menu->title, $options->title); ?></title>
<meta name="robots" content="noindex, nofollow">
<?php echo $header; ?>
</head>
<body<?php if (isset($bodyClass)) {echo ' class="' . $bodyClass . '"';} ?>>
admin/footer.php
同上。
<?php if(!defined('__TYPECHO_ADMIN__')) exit; ?>
<?php \Typecho\Plugin::factory('admin/footer.php')->begin(); ?>
</body>
</html>
<?php
/** 注册一个结束插件 */
\Typecho\Plugin::factory('admin/footer.php')->end();
// 获取输出缓冲区的内容
$output = ob_get_contents();
// 清空缓冲
ob_end_clean();
// 压缩
$compressedOutput = compressHtml($output);
// 输出压缩后的代码
echo $compressedOutput;
function compressHtml($html)
{
// 后台防止出错+数据量不大 不卡 就不压缩了,只做替换处理。
$compressedHtml = str_replace('https://cdn.jsdelivr .net', 'https://jsd.cdn.zzko.cn/', $html);
return $compressedHtml;
}
题外话
休息一下,回忆录暂时先不写了,无聊还是会来写几句的,但不会集中精力在这上面.
帅的
ccc
?