基于wordpress和Sakura主题插件搭建博客网站

news2024/11/24 3:02:37

基于wordpress和Sakura主题插件搭建博客网站

      • 1.引言
      • 2.认清现实
      • 3.使用的本地化方法
      • 4.分享自己走的一些弯路
      • 5.硬刚404的余波
      • 6.额外的收获

1.引言

    最近,本着试试的想法,想着找一个前端方面的工作,遇到一些招聘软件或者网站上面有一栏是个人博客网站链接。想着自己虽然在CSDN有20w的访问量,但是还是没有自己的博客网站,虽然之前是有的,但是由于自己更换主题搞崩了。现在趁着寒假决定重新搭一下,恰好之前看见了一个比较好的博客主题,决心用一用,在使用的过程中由于主题使用的CDN主要是德国开始扩展的,导致插件的使用给网站的响应速度带来了极大的负担。作为一个杠精,决定用自己微不足道的前端性能优化方式来缩短网页的响应速度。于是,下面的故事就发生了。

2.认清现实

    wordpress在下载好官方的建站源码安装完成之后,由于开始的配置都被初始化到数据库里面了,如果想要直接修改数据库的方式快速修改配置是不太现实的,可能某处的配置更改了,其他的地方会报错。企图直接修改数据库实现页面的效果更改实在是太憨了,这可不是个好习惯,而且Navicat,不支持crtl+Z。于是决定直接抛弃原来的wordpress数据库,虽然里面有很多文章,但是对我而言到时无所谓的,我CSDN里面有着大量的文章,并且wordpressCSDN都是用的Markdown语法,直接复制粘贴很快的。
    于是,我便通过一些方式白嫖到了Sakura主题插件,了解了主题的安装方式:直接复制到wp-content/themes/目录下,然后在wordpress的管理端启用主题插件。结果一看,网页打开时间高达几十秒,站在用户的角度来说这是非常不爽的。我是用浏览器网络调试发现明显是调用了CDN资源,然后我使用域名查询地址的方式访问了一下域名,发现最快的地方竟然是在德国,由于国内网络访问外网十分不稳定,通常会出现一下资源能够访问网页加载快,一会儿又加载慢的情况。为了提高博客站点的稳定性,我决定将里面的CDN资源本地化。没想到的是简单的几个字确花费了我一周的零碎时间。

3.使用的本地化方法

    虽然自己的方法可能有一些愚钝,但还是分享给大家:
(1)文件定位:利用idea快速定位文件,为什么不使用电脑的查询呢?电脑查询往往扫描了半天还是看不到文件,使用idea更快,更何况我的盗版系统的文件扫描相关的服务损坏了,根本用不了。打开idea一看,需要注册码,最后久经波折,找到了这个有效的激活链接:idea激活码,当然后来发现直接使用服务器中宝塔面板的文件检索也是可以的;
(2)文件内部搜索:idea是不具备文件内部搜索的,只能点击文件内部搜索,而且每次搜索跳转文件之后需要重新搜索,直接使用宝塔面板内嵌的生产环境代码查看方式也是如此。vscode则能够文件跳转默认再次扫描文件查询,这样能够提高文件的搜索速度。于是我想出了借鉴之前uniapp开发时候使用Hbuilder调试,vscode编辑代码的方式。在本地克隆一份相同的代码,然后利用vscode搜索国外的cdn域名,找到了具体的文件之后,下载对应文件到本地,如果没有下载下来那就翻墙下载。然后经过漫长的操作资源就下载下来了,由于采用的是发现一个修改一次路径的方式,一开始也没有注意到用的是php脚本语言,php在网页中非常灵活,很多资源定位错误了,不过不要紧,404了就找到文件的位置看看其他本地资源的引入方式,其实就是使用了get_template_directory_uri()这个函数直接获取到主题的根目录,然后拼接上本地资源,这样能够保证插件的可移植性,不然的话如果使用的是网络请求,存在两个缺点不能够很好的利用索引提高文件查找速度,另一方便主题插件难以扩充,当然还存在如果主题被第三方使用,那么无端给自己的服务器带来的静态资源请求负担。经过vscode搜索,生产环境修改代码、调试,终于将所有的cdn资源本地化完成了。

4.分享自己走的一些弯路

    由于一开始没有提高对js压缩文件的重视程度,导致忽略了很多静态资源的本地化,甚至由于请求的资源里面出现了404报错,明明可以看到cdn链接,但是一致找不到位置,情急之下通过JS格式化工具来格式化代码,找到了函数的调用位置(本来如果有.map映射文件的话还比较好找到位置,但是插件里面是不具有的,另外如使用格式化,需要提前备份好已经压缩的文件,压缩文件->格式化->压缩会出问题的,而二者逻辑不一样,格式化方便查阅代码,压缩会存在代码混淆,变量简化成单个字母等)。找到之后直接使用类似于抓包工具一样通过检索请求的链接,直接强制拦截并本地请求化,比如请求资源为:https://cdn.nightowl.top,通过indexof查找cdn判断链接是否使用远程cdn,如果使用那么将请求链接改成https://blogs.nightowl.top/wp-content/themes/Sakura/…,后来才发现这种思路可行但是没有必要,主要还是找漏了。
    还有一个就是遇到了大量的请求字体图标的情况,下面贴一张图可能更加形象:
在这里插入图片描述
    如果还是手动修改的话(下载文件,修改引用方式),是不是很沙雕。我第一次遇到的时候跳过了,后来由于请求线路不稳定,部分字体资源可能达到一秒或几秒,最后决定还是本地化一下,反复操作了几次之后觉得不对劲。采用的解决方式如下(仔细观察可以发现字体文件就是最后几位不一样,利用这个特点可以再用上node.js的文件读写功能快速操作):
在这里插入图片描述
    由于js大量读写或者网络问题,后来发现还是有几个没有引入好,这个时候再来手动修改,工作量明显小了很多。

5.硬刚404的余波

    网站404后来成为影响响应速度最大的因素,一旦404网页的加载会延时一段时间,导致加载时间非常大。这里以主题插件内部的inc/switcher.php为例,通过分析发现本来是请求网页背景图资源,但是由于https://api.mashiro.top/bing/链接请求背景图方式错误(个人猜测),于是在代码内部逻辑中强制替换了该链接,改成使用本地资源,然后随手P了一个背景图上去。
    点击个人头像bug,虽说不是404但是直接跳转到了一个空页面,理论上应该是跳转到个人资料的详情页。解决思路是利用好内部的提示弹出框插件,使用a标签拦截的方式(绑定点击事件,return false)给出提示友好处理一波。

6.额外的收获

    由于个人资料的跳转,当时觉得是测试的用户没有成为我的博客网站的注册用户导致的,于是注册了一个用户,但是注册之后需要发送一个邮件到指定的创建用户时使用的邮箱。通过查阅资料,找到了这篇文章:WP Mail SMTP邮件配置教程,不巧的是我这边使用的是网易邮箱,其实也差不多,使用smtp.163.com,然后在网易邮箱开启pop3/smtp以获取授权码,里面说的比较模糊的是邮箱:SMTP Username其实就是你使用的邮箱。另外的话如果wordpress 提示无法下载插件的话,需要进行如下的几部操作:

(1)配置ftp相关的全局变量(参照实例配置就行):

define('FTP_BASE', '/www/wwwroot/blogs.nightowl.top/personal-blog-site/');
define('FTP_CONTENT_DIR', '/www/wwwroot/blogs.nightowl.top/personal-blog-site/wp-content');
define('FTP_PLUGIN_DIR', '/www/wwwroot/blogs.nightowl.top/personal-blog-site/wp-content/plugins/');
define('FTP_THEMES_DIR', '/www/wwwroot/blogs.nightowl.top/personal-blog-site/wp-content/themes/');
define('FS_METHOD', 'direct');

(2)将wp-content的所有者改成www,不要直接777权限过高不安全:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我用递归写单调栈(?)

前言:嗯,这个题上午有的思路,敲了一中午代码,改了一下午最后超时? 题:D. Boris and His Amazing Haircut 题意:一个理发师可以把一段数组给建成一个高度,他现在每个高度的剪子都有若干个。给一个原始数组和…

STL - Set容器

基本概念 构造和赋值 功能描述&#xff1a;创建set容器以及赋值 #include <algorithm> //算法 #include <iostream> #include <set> #include <string> using namespace std;// set/multiset容器void printSet(set<int>& s) {for (set<i…

Java之节点流和处理流(Buffered字节字符处理流)

文章目录前言基本介绍Buffered字符处理流BufferedReader缓冲字符输入流BufferedWriter缓冲字符输出流文件拷贝Buffered字节处理流文件拷贝&#xff08;二进制文件&#xff09;处理流关闭问题前言 Java中的流按照功能可以分为节点流和处理流。其中节点流是直接用来访问数据源&a…

GO的interface的使用和反射

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点&#xff0c;以及职场小菜鸡的生活。&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知…

自动化测试

一、关于自动化什么是自动化?扫地机器人 自动浇水机 自动洗手液 智能马桶... &#xff0c;能够有效的减少人力的消耗&#xff0c;同时提高生活质量。而自动化测试同样&#xff0c;能够有效减少人力的投入&#xff0c;同时提高了测试的质量和效率。回归测试&#xff0c;版本越来…

23.Isaac教程--Isaac导航

Isaac导航 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 节点和消息 Isaac 应用程序由多个节点创建。 导航堆栈具有以下节点&#xff1a; GlobalLocalization&#xff1a;在没有先验信息的情况下&#xff0c;仅使用当前范围扫描测量来估计地…

【JavaGuide面试总结】MySQL篇·上

【JavaGuide面试总结】MySQL篇上1.SQL语句在MySQL中的执行过程MySQL架构Server 层基本组件介绍查询语句分析更新语句分析总结2.MySQL更新语句为什么要用两个日志模块&#xff0c;用一个日志模块不行吗?3.MySQL 支持哪些存储引擎&#xff1f;默认使用哪个&#xff1f;4.MySQL 存…

虹科分享 | TSN时间敏感网络测试框架

一、时间敏感网络 时间敏感网络&#xff08;TSN&#xff09;允许合并OT和IT世界&#xff0c;并保证确定性以太网网络中所有设备的互操作性和标准化。TSN建立在一个真正成熟的生态系统中&#xff08;如以太网&#xff09;&#xff0c;因此大家认为TSN将是下一代工业网络通信的核…

top命令详解

1. 命令参数 d : 监控内容刷新的时间间隔。 n : 限定监控内容刷新的次数&#xff0c;完成后将会退出 top 视图。 p : 只监控指定PID的进程。 -b : 以非交互非全屏模式运行&#xff0c;一般配合-n指定输出几次统计信息&#xff0c;将输出重定向到指定文件&#xff0c;比如 top …

二分查找----C/C++

目录 1. 二分查找的概念 2. 整数的二分 2.1 二分的模版一 2.2 二分的模版二 2.3. 案例剖析 2.4.整数二分总结 3. 浮点数的二分 1. 二分查找的概念 折半查找(BinarySearch)技术&#xff0c;又称为二分查找。它的前提是线性表中的记录 必须是关键码有序(通常从小到大有序)&a…

mysql 分库分表、 分区(partition)、sharding-sphere 综合整理

引言&#xff1a; 一般情况下&#xff0c;如果单表数据量超过2000w的样子查询速度会很慢&#xff0c;因为内存无法存储其索引&#xff0c;使得之后的 SQL 查询会产生磁盘 IO&#xff0c;从而导致性能下降。解决方案&#xff1a;mysql 分区 、 分表处理 分库分表&#xff1a; 原…

【匠心打造】从0打造uniapp 可视化拖拽设计 c_o 第六篇

1、这个版本的变化是左侧增加了布局设计和包资源管理器 包资源管理器&#xff1a;eclipse的特称&#xff0c;左侧的项目管理。和hbuildx左侧类似 项目的整体设计结构如下: v1.0 普通模式&#xff1a;支持新建前端项目&#xff0c;拖拽&#xff0c;且生成前端项目&#xff08…

基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作

目录 “遥感”助推蓝碳生态系统碳储量调查简介 第一章 高光谱遥感数据介绍及预处理 第二章 光谱特征分析与参量提取 第三章 高光谱遥感数据分类与制图 第四章 GEE数据处理介绍 第五章 碳储量时空变化与预测 大气温室气体浓度不断增加&#xff0c;导致气候变暖加剧&#x…

DFS的树上应用

目录 一、前言 二、树上的DFS 1、树的重心 2、树的重心例题 3、树的直径 4、树的直径例题 &#xff08;1&#xff09;做两次DFS 三、拓扑排序与DFS 1、用DFS解拓扑排序 2、欧拉路与DFS 3、用DFS输出一个欧拉回路 一、前言 本文主要讲了树上的DFS、树的重心、树的直…

538. 把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树 难度中等 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&am…

关于浮点数使用的两个注意事项(C/C++)

目录 一.回顾浮点数的存储与读取 二.浮点数使用的第一个注意事项 三.浮点数使用的第二个注意事项 附&#xff1a; 观察内存中的FLT_MAX和FLT_MIN 一.回顾浮点数的存储与读取 http://t.csdn.cn/oVwte 浮点数的存入与读取流程总览&#xff1a; 二.浮点数使用的第一个注意事…

理解实现八大排序

目录 一、初步认识 二、直接插入排序 三、希尔排序 四、直接选择排序 五、堆排序 六、冒泡排序 七、快速排序 7.1 Hoare版本 7.2 挖坑法 7.3 前后指针法 7.4 非递归 7.5 优化方法 7.5.1 三数取中 7.5.2 小区间优化 八、归并排序 九、计数排序 一、初步认识 排…

Netty入门

二. Netty 入门 1. 概述 1.1 Netty 是什么&#xff1f; Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架&…

简单开发网站+HTML标签

目录 一、学习路线 二、快速开发网站 1、简单demo 2、浏览器能识别的标签 ① 编码② Title ③ 标题 ④ div和span ⑤ 超链接 ⑥ 图片⑦ 列表 ⑧ 表格 ⑨ input系列 ⑩ 下拉框 ⑪ 多行文本 三、网络请求 四、案例 1、用户注册 2、用户登录 五、小结 1、学习标签的总…

网易互客CRM 微盟系统 管易系统 金蝶系统对接集成整体解决方案

前言&#xff1a;大部分的企业都可能只用一套系统组织架构复杂&#xff0c;业务流程繁琐&#xff0c;内部同时有CRM系统、OMS系统、ERP系统......且各个系统都需要独立登陆&#xff0c;造成IT部门数据监管困难&#xff01;如何在同一套中台系统上关联多管理系统呢&#xff1f;系…