多说 提速:js内页页脚加载、静态文件CDN
最近为 Jeff的阳台 折腾着插件的提速工作。Jeff的阳台使用了多说评论系统,但多说的加载速度实在是不敢恭维(稳定性也一样),于是又邪恶地想到为多说提速一番,下面就将Jeff的成果写出来分享分享。Jeff 针对多说的提速目前只要在两个方面:js内页页脚加载、静态文件CDN。以下是以最新版本的多说插件(1.1版本)来提速。
js内页页脚加载
以前版本的多说,多说核心脚本embed.js默认所有页面加载,默认网页头部加载。最新版本的多说对于后面一项已经提供用户选择的权利了,在WordPress 后台-多说评论-高级选项 就有:
那么,是要解决“所有页面加载”的问题了。这一点多说插件并没有选项,而我们知道,评论一般在文章中(内页),如果在首页也加载,并不是一个明智的做法。要将多说核心脚本embed.js 只在内页加载,必须要对插件php 文件动手。打开插件目录的 duoshuo 文件夹,里面有个 WordPress.php 文件,打开,大概在581 行有那么一段代码:
<script type="text/javascript"> var duoshuoQuery = <?php echo json_encode($this->buildQuery());?>; duoshuoQuery.sso.login += '&redirect_to=' + encodeURIComponent(window.location.href); duoshuoQuery.sso.logout += '&redirect_to=' + encodeURIComponent(window.location.href); </script> <script type="text/javascript" src="http://static.<?php echo self::DOMAIN;?>/embed.js" charset="UTF-8" async="async"></script> <?php } |
---|
只在内页加载的话将上面代码替换为如下:
<?php if ( is_single() || is_page() ) {?> <script type="text/javascript"> var duoshuoQuery = <?php echo json_encode($this->buildQuery());?>; duoshuoQuery.sso.login += '&redirect_to=' + encodeURIComponent(window.location.href); duoshuoQuery.sso.logout += '&redirect_to=' + encodeURIComponent(window.location.href); </script> <script type="text/javascript" src="http://static.<?php echo self::DOMAIN;?>/embed.js" charset="UTF-8" async="async"></script> <?php }} |
---|
搞定!
静态文件CDN
在前台的话,多说插件一般加载有个js与css 文件——embed.js、embed.xxx.css(xxx为评论样式主题名称,最新版有该功能)。两个文件都是在static.duoshuo.com 这个二级域名下,该域名本身也有CDN,但Jeff 用站长工具“超级ping”查看了一下,加速节点才那么几个。于是Jeff 想到了用七牛云存储 来加速这两个静态文件。
熟悉七牛的应该知道怎么做了:在七牛后台新建一个空间,如Jeff新建了一个dstatic的空间,对应的七牛的二级域名就是 dstatic.qiniudn.com 。接着在空间设置 那里源站加速static.duoshuo.com 。
在此之前,先说说对于embed.xxx.css ,因为该文件是在embed.js(http://static.duoshuo.com/embed.js) 那里调用的,调用的代码在embed.js 是这么一行:
e != "none" && b.injectStylesheet(y + "/styles/embed" + (e ? "." + e + ".css?" + g[e] : "." + short_name) + ".css") |
---|
如果你将embed.js 格式化分析一下,你就会发现这么一句:y = "http://static.duoshuo.com",
,好吧,我懒得分析这个与上面代码的关系了,下面只说修改方法:下载该embed.js 文件,在该下载的文件搜索 static.duoshuo.com
(仅有一处),修改为七牛的地址(如Jeff 是 dstatic.qiniudn.com)。
然后将embed.js 改名为embed2.js (为了防止与七牛镜像的embed.js 起冲突),上传到七牛的空间里面。以Jeff的为例,在七牛的地址就是 dstatic.qiniudn.com/embed2.js 。
插件目录的 duoshuo 文件夹,里面有个 WordPress.php 文件,搜索“embed.js” 有两处结果,对应的代码是:
//第一处 <script type="text/javascript" src="http://static.<?php echo self::DOMAIN;?>/embed.js" charset="UTF-8" async="async"></script> //第二处 ds.src = 'http://static.duoshuo.com/embed.js'; |
---|
上诉的url(http那段) 都改为七牛的地址,如Jeff 改为:http://dstatic.qiniudn.com/embed2.js
保存上传,搞定!
本次教程一个例子就是 Jeff的阳台 ,请自行前往分析。
- Python编写渗透工具学习笔记二 | 0x02利用FTP与web批量抓肉鸡
- linux 网络编程之信号机制
- im4java + imagemagic 搭建一个图片处理服务
- # Java 一步一步实现高逼格的字符串替换工具(二)
- 专题 | Python编写渗透工具学习笔记二
- Java 一步一步实现高逼格的字符串替换工具(一)
- Python编写渗透工具学习笔记一 | 0x05抓取应用的banner --推断服务
- Logback 简明使用手册
- Python编写渗透工具学习笔记一 | 0x06 Zip包破解程序
- Java 并发排序
- Python编写渗透工具学习笔记一 | 0x07 Python实现键盘记录器
- Python编写渗透工具学习笔记一 | 0x08字典生成程序
- 漫步VR——Unity语音聊天室开发
- Python编写渗透工具学习笔记一 | 0x01 目录扫描程序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- pytest文档48-切换环境(pytest-base-url)
- 打卡群刷题总结0826——组合总和
- 排序之简单排序
- 打卡群刷题总结0827——组合总和 II
- 快速学习-Gateway--服务网关
- 用Python写一个身份证号码校验系统
- 手摸手 Elastic Stack 使用教程 - 环境安装
- SAS-输出文档生成目录的方法
- 醒醒神,爱奇艺笔试真题
- Qt音视频开发22-通用GPU显示
- 通吃岛屿问题
- 堂妹问我:Dubbo的服务暴露过程
- LeetCode 657. 机器人能否返回原点
- ! [rejected] master -> master (fetch first)
- Mybatis源码学习(二)Mapper动态代理