【前端】用OSS增强Hexo的搜索功能

文章目录

    • 前言
    • 配置 `_config.fluid.yml`
    • 云端实时更新 `local-search.xml`
    • 解决 `OSS.Bucket` 的跨域问题

前言

原文地址:https://blog.dwj601.cn/FrontEnd/Hexo/hexo-enhance-local-search-with-oss/

考虑到某著名云服务商提供的云服务器在两年的 99 计划后续费价格高达四位数,遂研究一下降配续费。结果在将带宽从 3Mbps 降低到 1Mbps 并退给我三十几元后,发现不能撤回这一步操作,重新恢复至 3Mbps 需要我掏五百多元,绝。

考虑到目前只用那台机器托管了一个 Hexo 静态网站,最大的带宽开销是搜索时加载的约 8.5MB 的 local-search.xml 文件,在 3Mbps 带宽的情况下,需要加载约 8.5 × 8 3 ≈ 23 \frac{8.5\times 8}{3}\approx 23 38.5×823 秒,我已经难以忍受,现在直接给干到一分钟了。不得以,开始研究将该索引文件丢到这家云服务商的 OSS 上,悲。

配置 _config.fluid.yml

从 Fluid 的配置文件 _config.fluid.yml 中很容易找到 search.path 字段,其明确说明可以将索引文件的路径配置为外链地址,那么直接将 generate 出来的 local-search.xml 文件丢到 OSS 中,然后链接到对应的「公共读」文件即可。

当然这么干的前提是 OSS 的流出带宽要比 3Mbps 大。一搜 OSS 的流出带宽,没绷住:

南京本地地域的流出带宽大概是我原来小破 3Mbps 的一千倍,艹!

行吧,看来这个方案是可行的。

云端实时更新 local-search.xml

由于我会频繁更新博客内容,为了让搜索到的结果可以完美的匹配我的博客,就需要确保索引文件也是同步更新的。那我每次都要打开阿里云 OSS 控制台然后上传 local-search.xml 文件吗?必然不可能。阿里云 OSS 提供了诸多的第三方工具,例如 GUI 工具 oss browser、CLI 工具 ossutil、各语言的 SDK 等,这里用到 CLI 即可。自定义 git bash 中的命令后就得到了下面的语句:

alias gpho='git push && hexo clean && hexo generate && hexo deploy && ossutil cp </path/to/local-search.xml> oss://dwj-oss/search-files/'# 上述部署逻辑其实就是:
# 1. git push
# 2. hexo clean && hexo generate && hexo deploy
# 3. ossutil cp </path/to/local-search.xml> oss://<bucket_name>/path/to/oss_folder/

这样在更新完博客以后,在 git bash 终端输入 gpho 即可同步更新博客站点和索引文件啦!

解决 OSS.Bucket 的跨域问题

但是还没完。由于 Hexo-Fuild 的搜索逻辑代码中使用到了 Ajax 请求,对于云服务器,其需要向 OSS 对应的主机发起请求,这就会引发浏览器的跨域问题从而导致 local-search.xml 文件无法正常被加载到用户的浏览器中。去阿里云 OSS 的控制台配置对应 Bucket 的 跨域规则 即可。例如我的配置:

配置对应 Bucket 的跨域规则即可

现在 8.5MB 的 local-search.xml 只需要几百毫秒即可加载完成,美汁汁!

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

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

相关文章

Hive SQL必刷练习题:留存率问题

首次登录算作当天新增&#xff0c;第二天也登录了算作一日留存。可以理解为&#xff0c;在10月1号登陆了。在10月2号也登陆了&#xff0c;那这个人就可以算是在1号留存 今日留存率 &#xff08;今日登录且明天也登录的用户数&#xff09; / 今日登录的总用户数 * 100% 解决思…

VSCode代理配置导致的SSL证书验证错误及解决方案

问题现象 遇到SSL证书验证错误&#xff1a; FetchError: Hostname/IP does not match certificates altnames: Host: api.github.com. is not in the certs altnames: DNS:draw.yxwl.asia原因分析 使用代理服务导致的证书验证问题请求被重定向到错误的服务器DNS或网络配置问…

解决 IntelliJ IDEA 项目包后出现“% classes”和“% lines covered”的问题

前言 在使用 IntelliJ IDEA 开发 Java 或其他支持的语言时&#xff0c;您可能会遇到项目包后面意外地出现了“% classes”和“% lines covered”的信息。这些百分比表示的是代码覆盖率&#xff08;Coverage&#xff09;&#xff0c;它们展示了您的测试覆盖了多少比例的类和代码…

Ubuntu 24.04 LTS 系统语言英文改中文

Ubuntu 24.04 LTS 修改软件源 Ubuntu 更改软件源 修改语言 无需输入命令&#xff0c;为Ubuntu 24.04系统添加中文智能拼音输入法 在 setting 的 system 中按下图操作 点击“Apply Changes”。需要管理员密码&#xff0c;安装完成后&#xff0c;退出登录&#xff0c;重新登…

Linux网络 TCP socket

TCP简介 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。它位于OSI模型的第四层&#xff0c;主要为应用层提供数据传输服务。TCP通过三次握手建立连接&#xff0c;确保数据在发送和接收过程中的准确性和顺序…

【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(6)

大模型WebUI&#xff1a;Gradio全解11——Chatbot&#xff1a;融合大模型的多模态聊天机器人&#xff08;6&#xff09; 前言本篇摘要11. Chatbot&#xff1a;融合大模型的多模态聊天机器人11.6 为LLM Agent构建UI11.6.1 使用transformers.agents11.6.2 使用Langchain agents11…

springboot基于前后端分离的摄影知识网站

Spring Boot 基于前后端分离的摄影知识网站 一、项目概述 Spring Boot 基于前后端分离的摄影知识网站&#xff0c;是一个专为摄影爱好者、专业摄影师打造的知识共享与交流平台。借助 Spring Boot 强大的后端架构搭建能力&#xff0c;结合前端独立开发的灵活性&#xff0c;整合…

VD:生成a2l文件

目录 前言Simulink合并地址 ASAP2 editor 前言 我之前的方法都是通过Simulink模型生成代码的过程中顺便就把a2l文件生成出来了&#xff0c;这时的a2l文件还没有地址&#xff0c;所以紧接着会去通过elf文件更新地址&#xff0c;一直以为这是固定的流程和方法&#xff0c;今天无…

物联网与前沿技术融合分析

【前言】 在科技发展的滚滚浪潮中&#xff0c;物联网作为连接物理世界与数字世界的桥梁&#xff0c;正日益凸显其关键作用。近年来&#xff0c;物联网与其他前沿技术的融合不断催生新的应用场景与创新模式&#xff0c;为各个领域带来了深刻变革。 物联网与人工智能的深度融合&…

第4章:Python TDD消除重复与降低依赖实践

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

Python爬虫-爱奇艺电视剧数据

前言 本文是该专栏的第44篇,后面会持续分享python爬虫干货知识,记得关注。 本文以爱奇艺平台的电视剧为例,获取电视剧的相关数据信息。废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码…

ASP.NET Core 中基于 Cookie 的身份鉴权实现

在 ASP.NET Core 应用中&#xff0c;基于 Cookie 的身份鉴权是一种常见的身份验证方式&#xff0c;特别适用于传统的 Web 应用程序。Cookie 能够在用户的浏览器中存储身份验证数据&#xff0c;从而在用户访问应用的不同页面时保持登录状态。 一、配置 Cookie 身份验证 首先&a…

【VRChat · 改模】Unity2019、2022的版本选择哪个如何决策,功能有何区别;

总览 1.Unity2019、2022的版本的选择 2.Unity添加着色器教程 一、Unity2019、2022的版本的选择 1.Unity2019 和 Unity2022 的区别&#xff0c;VRChat SDK 为何要区分两个版本 我是外行&#xff0c;最开始以为的是&#xff0c;2019 和 2022 的变化是基于这个模型本身的。 也…

数据仓库经典面试题

一、数据仓库基础概念 1. 什么是数据仓库&#xff1f; 答案&#xff1a;数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合&#xff0c;用于支持管理决策过程。解释&#xff1a;面向主题&#xff1a;围绕特定主题组织数据&#xff0c;如销售主题、客户主题&…

Elasticsearch 和arkime 安装

安装一定要注意版本号&#xff0c;不然使用不了 这里Ubuntu使用ubuntu-20.04.6-desktop-amd64.iso elasticsearch这里使用Elasticsearch 7.17.5 | Elastic arkime这里使用wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-20.04/arkime_3.4.2-1_amd64.deb 大家想…

【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)

链路上的相关性模型 召回海选 打分量&#xff1a;数万模型&#xff1a;文本匹配分数线性模型或双塔BERT模型 粗排 打分量&#xff1a;数千模型&#xff1a;双塔BERT&#xff0c;或单塔BERT模型&#xff08;交叉&#xff09; 精排 打分量&#xff1a;数百模型&#xff1a;单塔B…

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…

GraphRAG: Auto Prompt Tuning 实践

GraphRAG 的 Auto Prompt Tuning 功能是一个强大的工具&#xff0c;用于优化知识图谱的生成过程。以下是对该功能的详细介绍和分析&#xff1a; 自动提示调优&#xff08;Auto Prompt Tuning&#xff09; 1. 概念 GraphRAG 的自动提示调优功能旨在为特定领域的知识图谱生成创…

MySQL下载安装DataGrip可视化工具

目录 WinMySQL下载安装步骤MySQL配置添加环境变量 Mac下载安装配置环境变量 DataGrip可视化工具以Win为例了。Mac忘记截图了。步骤都一样 Win MySQL下载 官网&#xff1a; https://www.mysql.com/ 直接进下载界面&#xff1a; https://downloads.mysql.com/archives/installe…