加速博客体验:静态资源优化技巧大揭秘!

如今有许多人涉足博客写作,其中大多数正处于博客创作的旅程中。每位程序员都梦想拥有自己的服务器,理想情况下,服务器配置越高越好,价格越实惠越好。购买一台基础款服务器用于建立博客是一个不错的选择,因为并不需要处理大流量。这完全是出于个人兴趣和坚持写作的良好习惯。

当然了写博客都会插入图片的时候,毕竟一篇图文并茂的博文才更吸引读者的注意,但是反之而来的问题就出现了,图片的加载速度完全跟我们自己的服务器带宽有很大的影响,但是带宽越高价格也就越贵,所以单独去配置一下媒体的缓存。本篇就以这个问题展开来解决一下。

静态资源加速方式

在本文中,我将重点介绍我熟悉且经常使用的方法,包括但不限于图片压缩、Nginx静态资源缓存以及类似EdgeOne这样的CDN产品。通过这些方式,我们可以提高网站的性能和用户体验,有效地解决图片加载速度受带宽影响的问题。

图片压缩

这个方式是我想到最简单的,而且也不用花钱,完全就是靠自己使用代码实现的一个效果。现在有很多代码都可以去实现这类功能,我这里主要使用Java代码去实现的功能。可以简单看下实现:

// 从URL下载图片并保存到本地存储中
File savedImage =  FileUtil.file(imagePath);
HttpUtil.downloadFile(imgUrl,savedImage);
log.info("高清图片已生成:{}",imagePath);
//缩略图地址
String scalePath = rootPath + "/scale-images/" + png;
//webp文件直接拷贝
if ("webp".equals(extension)) {
    FileUtil.copy(imagePath, scalePath, true);
} else {
    File scaleImage =  FileUtil.file(scalePath);
    //hutool的工具类直接使用压缩
    ImgUtil.scale(savedImage,scaleImage, 0.15f);
}
log.info("缩略图片已生成:{}",scalePath);
ImgDetailLog imgDetailLog = new ImgDetailLog();
//直接使用文件路径映射保存下来
baseMapper.insert(imgDetailLog);
StringRedisUtils.add(saveKey, hex16);

这段代码只是冰山一角,可以想象到,如果采用这种方法,你需要编写一个完整的博客平台,或者修改现有平台以实现这一功能:用户在浏览文章时体验压缩后的内容,以提高用户体验;下载时则可获取高清图片。这将涉及大量的代码修改,而我们显然没有足够的时间来完成这一任务。

Nginx静态资源缓存

相比之前的步骤,这部分要简单得多,无需进行大规模的代码更改,只需在您的服务器上添加一个Nginx组件即可。Nginx具有多个主要功能:负载均衡,这是非常常见的功能;另一个是动静结合,可以让静态图片或资源直接通知浏览器进行缓存。这也是常见的应用场景,另外,您还可以为Nginx单独配置一个静态目录。

让我们简要说明一下:可以通过简单地通知浏览器缓存图片30天来提高性能。此外,还可以考虑对JavaScript、CSS等文件进行类似的处理。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
    error_log /dev/null;
    access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
    expires      12h;
    error_log /dev/null;
    access_log /dev/null;
}

这样做的好处是可以有效地减轻服务器资源占用的带宽压力,然而其中一个缺点在于当浏览器禁用缓存时会出现问题。另外,删除了缓存,请求仍然也会继续进入服务器占用带宽。

image

除了开发人员外,很少有其他人愿意禁用缓存,因为在开发过程中缓存会耽误我们的工作。因此,我通常会保持缓存关闭的状态,以防止出现意外错误。

EdgeOne

在前几篇文章中,我已经详细介绍了EdgeOne的主要功能,包括边缘函数和Web安全防护功能。今天我们再来探讨另一个功能,即加速功能,除此之外,还有其他一些小功能也值得探索,这些功能都非常适合用于博客系统的加速。你可以将EdgeOne理解为拥有Nginx功能的同时又能够进行可视化配置。

静态加速

首先,让我们来详细讨论EdgeOne的主要功能——加速。它消除了之前提到的两种方式的缺点,但同时也可能增加一定的费用支出,因此在选择是否使用该功能时,也需要考虑个人的需求。

image

EdgeOne具有设置自定义缓存时间的功能,例如,如果我们在Nginx上配置了30天的缓存时间,那么我们可以在EdgeOne上修改这个时间,或者直接使用默认的缓存设置。我默认使用我们的缓存配置,并且还具有离线缓存功能。如果我的网站出现宕机情况,EdgeOne可以从离线缓存中获取资源,而无需访问我们的服务器,这意味着可以使用之前缓存的资源来显示网站内容。这对于静态网站来说是非常有用的功能。

image

然而,我们发现了一个问题,即无法阻止浏览器禁用缓存。尽管无法完全禁止此行为,但是EdgeOne拥有节点缓存功能,这是默认CDN提供的服务之一。

image

让我们看一下没有进行加速优化的效果。

image

加速效果十分显著,因为我通常使用高清图片,所以每张图片加载时间基本在8秒左右,受限于我的带宽。不过,配置了EdgeOne缓存后,可以明显感受到加载速度提升,基本在1至2秒之间即可完成加载,而且不会给我的服务器带宽带来额外压力。

image

image

再来看一下缓存分析结果:可以观察到绝大部分流量都在EdgeOne上,而服务器的响应则非常有限。

image

image

网站证书

如今,大多数网站已经实现了HTTPS访问。这不仅让用户感到网站更加安全可信,也符合国家推行的HTTPS访问政策。回想起几年前,我还曾经亲自操作生成免费证书并安装,虽然操作熟练,但仍需耗费将近1小时的时间。而现如今,EdgeOne提供了免费证书一键安装功能,使用起来非常方便,让我受益匪浅。

image

http重定向到https

为什么有些用户会习惯使用非加密的HTTP而不是加密的HTTPS呢?比如说,我通常很少在网址前加上“s”。但是现在许多网站都会将HTTP请求重定向到HTTPS,这也是我之前为了我的网站进行过配置的原因。当然,这些重定向操作都是在Nginx上进行的。

#   server {
#         listen 80;
#         listen [::]:80;
#     server_name 域名;
#     return 301 https://域名$request_uri;
#     }

确实,虽然不是特别费劲,但是还是有点麻烦,不过EdgeOne也提供了一键配置的功能,让操作更加便捷。

image

剩下的就不一一列举了,总的来说,这些基本上已经足够满足我的需求。

总结

在博客写作中,静态资源加速方式是解决图片加载速度的关键。通过图片压缩、Nginx静态资源缓存和EdgeOne等CDN产品的应用,我们提高了网站性能和用户体验,减轻了服务器带宽压力。EdgeOne的功能包括静态加速、网站证书和HTTP重定向至HTTPS,简化了网站管理流程,提升了安全性。合理利用这些静态资源加速方式,博客创作者可以享受更优秀的写作环境和展示平台。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Date类.Java

目录 1.1Date概述 1.2Date常用方法 1.2.1 日期比较 2.1SimpleDateFormat类 1. 基本概念 2.构造方法 2.1格式规则: 3.成员方法 3.1格式化日期和时间 3.2解析日期和时间 4.练习1(出生日期) 5.练习2(秒杀活动) 1.1Date概述 util里面的Data类…

K8s 使用 CephFS 作为后端存储(静态供给、动态供给)

一、K8s 使用 CephFS CephFS是 Ceph 中基于RADOS(可扩展分布式对象存储)构建,通过将文件数据划分为对象并分布到集群中的多个存储节点上来实现高可用性和可扩展性。 首先所有 k8s 节点都需要安装 ceph-common 工具: yum -y ins…

项目进度规划全攻略,助你成为项目管理高手

项目进度管理作为项目管理中的核心环节,对于确保项目按时交付、控制成本和提高质量至关重要。本文将详细介绍项目进度管理的基本步骤,帮助项目经理和团队成员更好地理解和执行进度管理工作。 项目进度管理的基本步骤主要包括以下几个方面: …

236基于matlab的三维比例导引法仿真

基于matlab的三维比例导引法仿真,可以攻击静止/机动目标。1.三维空间内的比例导引程序,采用龙哥库塔积分法;2.文件名为bili3dnew的.m文件是主函数,执行时需调用目标机动子函数、导引律子函数、数值积分法子函数;3.文件…

微服务之并行与分布式计算

一、概述 1.1集中式系统vs分布式系统 集中式系统 集中式系统完全依赖于一台大型的中心计算机的处理能力,这台中心计算机称为主机(Host 或 mainframe ),与中心计算机相连的终端设备具有各不相同非常低的计算能力。实际上大多数终…

《ESP8266通信指南》8-连接WIFI(Arduino开发)(非常简单)

往期 《ESP8266通信指南》7-Arduino 开发8266的环境配置与示例代码烧录-CSDN博客 《ESP8266通信指南》6-创建TCP服务器(AT指令)-CSDN博客 《ESP8266通信指南》5-TCP通信透传模式(AT指令)-CSDN博客 《ESP8266通信指南》4-以Client进行TCP通信&#xf…

弹性盒之主轴侧轴对齐方式

弹性盒设置主侧轴对齐方式 1.默认 justify-content: flex-start 2.justify-content: flex-end 3.justify-content: center 4.justify-content: space-between; 两端对齐 5.justify-content: space-around; 距离环绕 调整侧轴上中下 1.默认align-items: flex-start; …

论机器学习(ML)在网络安全中的重要性

机器学习是什么? 机器学习(ML)是人工智能的一个分支,它使用算法来使计算机系统能够自动地从数据和经验中进行学习,并改进其性能,而无需进行明确的编程。机器学习涉及对大量数据的分析,通过识别数据中的模式来做出预测…

在MySQL中isnull()函数不能作为替代null值!

在MySQL中isnull()函数不能作为替代null值! 如下: 首先有个名字为business的表: SELECT ISNULL(business_name,no business_name) AS bus_isnull FROM business WHERE id2 直接运行就会报错: 错误代码: 1582 Incor…

5本On Hold,6本预警被踢,学术诚信高风险期刊被踢9本,还剩1本你还敢投吗?

本周投稿推荐 SSCI • 2/4区经管类,2.5-3.0(录用率99%) SCIE(CCF推荐) • 计算机类,2.0-3.0(最快18天录用) SCIE(CCF-C类) • IEEE旗下,1/2…

禅道项目管理系统身份认证绕过漏洞

禅道项目管理系统身份认证绕过漏洞 1.漏洞描述 禅道项目管理软件是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,完整覆盖了研发项目管理的核心流程。 禅道项目管理系统…

如何使用 Internet Download Manager (IDM) 来加速和优化你的下载体验 IDM 6.41下载神器

在当今信息爆炸的时代,下载文件和媒体内容已成为我们日常生活的一部分。无论是工作学习还是娱乐休闲,我们都需要从互联网上下载各种资源。为了提高下载效率和确保文件完整性,选择一款优秀的下载管理软件至关重要。Internet Download Manager …

PotatoPie 4.0 实验教程(21) —— FPGA实现摄像头图像二值化(RGB2Gray2Bin)

PotatoPie 4.0开发板教程目录(2024/04/21) 为什么要进行图像的二值化? 当我们处理图像时,常常需要将其转换为二值图像。这是因为在很多应用中,我们只对图像中的某些特定部分感兴趣,而不需要考虑所有像素的…

JavaScript 中的IF判断竟然可以这样写,效率更高

当然,它们是创建控制流的一种简单而方便的方式,但你可以写下数十亿行条件性的 JavaScript 代码,而不需要一个 if 语句。 而且有很多情况下,使用不同的结构会更清晰地展示你想要做的事情 —— 只要我们还在为人类编写代码&#xf…

深度学习系列65:数字人openHeygen详解

1. 主流程分析 从inference.py函数进入,主要流程包括: 1) 使用cv2获取视频中所有帧的列表,如下: 2)定义Croper。核心代码为69行:full_frames_RGB, crop, quad croper.crop(full_frames_RGB)。…

基于springboot+vue+Mysql的乐校园二手书交易管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

OPPO手机支持深度测试+免深度测试解锁BL+ROOT权限机型整理-2024年3月更新

绿厂OPPO手机线上线下卖的都很不错,目前市场份额十分巨大,用户自然也非常多,而近期ROM乐园后台受到很多关于OPPO手机的私信,咨询哪些机型支持解锁BL,ROOT刷机,今天ROM乐园正式盘点当前市场上可以解BL刷root…

Android图片压缩、Drawable和Bitmap转换、bitmap和base64转换

1. Android图片压缩、Drawable和Bitmap转换、bitmap和base64转换 1.1. Drawable和Bitmap之间的转化 1.1.1. bitmap和Drawable间的区别 Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执…

【YesPMP】众包平台,最新项目

YesPMP平台专注于软件开发领域,是专业的一站式互联网众包平台,目前平台汇聚了上万个解决方案,覆盖全国,拥有众多专业优质的H5开发服务商,专为企业提供软件H5开发解决方案,提高企业的知名度。优秀的H5能为用…

云仓酒庄北京发布会与《综合品酒师》培训的延伸层次分享

原标题:云仓酒庄北京发布会与《综合品酒师》培训近日,云仓酒庄在北京举办了一场盛大的发布会,并近期举行了首届《综合品酒师》培训活动。这一事件不仅引起了业内的广泛关注,更成为了酒类行业专业化、规范化发展的重要里程碑。大世…
最新文章