26 03 20

使用‌Speculation Rules API‌ 加速网页

使用‌Speculation Rules API‌ 加速网页

代码<script id="speculation-rules" type="speculationrules"> ,"eagerness":"moderate"}]} </script>‌Speculation Rules API‌ 是由 Google 提出并由 Chromium 内核浏览器(如 Chrome、Edge)支持的一种‌原生网页预加载技术‌,通过声明式 JSON 配置,让浏览器在用户尚未点击链接前,就提前下载甚至完整渲染目标页面,从而实现“点击即现”的极致体验。核心功能与模式‌prefetch(预取)‌提前下载目标页面的 HTML、CSS、JS 等资源至 HTTP 缓存,‌不执行脚本或渲染页面‌。资源消耗低,适合全站兜底使用。‌prerender(预渲染)‌在后台‌完整加载并运行页面‌,包括执行脚本、发起请求、渲染布局。点击时几乎瞬间切换,但消耗较多 CPU、内存和网络资源,需谨慎使用。触发时机(eagerness 参数)值触发条件适用场景immediate发现规...

24 12 05

Typecho后台美化插件开发历程

Typecho后台美化插件开发历程

TeAdmin插件灵感来自:https://www.ruletree.club/archives/1066/ 就是借助css隐藏默认后台菜单,然后在用js获取默认后台菜单dom,然后对dom进行调整,在插回页面。主要用到后台的header和begin接口。【生命周期:2020年~2024年,支持typecho1.2.0~1.2.1】NewAdmin插件购买地址:https://typecho.fans/archives/newadmin-typecho-plugin.htmlTeAdmin屎山叠的太厚了,所以在2023年从零重写了个新插件,更加简洁美观,起初实现方式原理也是用js构建页面。重构1:后在2024年12月重构使用ob_get_clean加simple_html_dom.php来获取初始菜单,不在依赖js构建,完全消除因等待js执行而导致的页面闪烁问题。然后利用navBar接口把重构样式的菜单塞到菜单位置上去。2025年重构2:不再使用ob_get_clean加simple_html_dom.php的粗暴方式,改为直接手写函数获取菜单组件并重构样式,提高执行效率缩进代码...

21 06 11

Typecho使用AJAX自动填写游客信息思路分享

Typecho使用AJAX自动填写游客信息思路分享

灵感来源35个月前写过一篇《Typecho使用AJAX实时获取评论头像》文章,当时只是获取ajax处理了邮箱,然后将gravatar头像地址给到头像。昨天看了大佬的文章《写了一个很鸡肋的功能》,通过邮箱读取gravatar网站的api获取用户昵称,然后自动填入到评论区昵称上,觉得灵感很棒,本来想抄下的,后来一想gravatar有墙啊,那就有点难受了。实现于是经过几秒钟的思考,觉得直接读取历史评论里面的信息不就好了嘛,只要填过一次,下次评论时只要写下邮箱,别的信息就自动获取到了。流程:用户填写邮箱地址,然后ajax请求api,api这里返回三个数据(头像地址,昵称,网站地址),然后将返回的信息自动填入。重点就是api返回的三个数组的实现,头像地址比较简单,就是将邮箱用md5加密下,然后拼上地址就行了。//差不多就是这种感觉 $avatar = 'https://secure.gravatar.com/avatar/'.md5($email).'?d=mm';然后就是昵称和网站地址的查询了,通过邮箱使用sql查询评论列表,然后抽取最新一条的信息...

19 04 28

Typecho不使用插件实现Ajax评论功能

Typecho不使用插件实现Ajax评论功能

我之前写过《Typecho不使用插件实现Ajax评论功能》这篇文章,文章中对绛木子的函数完善了评论触发的接口,但是评论过滤部分的接口没有完善,只是单纯的给出了替代方案,其实很早之前就解决了,只是一直没有写出来,今天就把完善好的函数放出来。原文绝大部分代码出自绛木子博客:https://lixianhua.com/te_ajax_comment_without_pluign.html为了不使用插件实现Ajax评论功能需要实现:1,监听评论表单,改用ajax方式提交2,创建新的评论表单提交地址(用Typecho主题提供的系统方法themeInit实现)当访问文章加载主题时,themeInit方法首先被加载,可在此方法中判断是否为添加评论的操作,即新的评论表单地址为文章的链接(permalink).具体判断方法如下// 主题初始化 function themeInit($archive){ // 判断是否是添加评论的操作 // 为文章或页面、post操作,且包含参数`themeAction=comment`(自定义) if($archive->is(�...