Web项目图片视频加载缓慢/首屏加载白屏

Web项目图片视频加载缓慢/首屏加载白屏

文章目录

  • Web项目图片视频加载缓慢/首屏加载白屏
    • 一、原因
    • 二、 解决方案
      • 2.1、 图片和视频的优化
        • 2.1.1、压缩图片或视频
        • 2.1.2、 选择合适的图片或视频格式
        • 2.1.3、 使用图片或视频 CDN 加速
        • 2.1.4、Nginx中开启gzip
    • 三、压缩工具推荐

一、原因

通常是由以下原因导致的:

  1. 图片或视频格式不当:如果图片或视频格式选择不当,比如选择了无损压缩格式,可能会导致文件大小过大,从而影响加载速度。
  2. 页面中同时加载了大量的图片和视频,导致请求次数过多,网络传输速度受限,从而影响页面加载速度。
  3. 页面中的图片和视频没有进行优化处理,比如没有进行压缩、没有使用 CDN 加速等。
  4. 页面的 HTML、CSS、JavaScript 代码没有进行优化,比如没有使用 webpack 进行打包、没有使用代码分割技术等,导致页面加载时间过长。
  5. 页面中的图片和视频没有使用懒加载技术,导致页面一次性加载过多的资源,从而导致页面加载速度变慢。
  6. 网络状况不佳,比如网络延迟、带宽受限等,都可能导致图片和视频加载缓慢。
  7. 服务器响应时间过长:如果服务器响应时间过长,会导致页面请求资源的时间变慢,从而影响页面加载速度。
  8. 使用了不稳定的第三方库:如果使用了不稳定的第三方库或者组件,可能会导致页面加载速度变慢。
  9. 浏览器缓存策略不当:如果浏览器缓存策略设置不当,可能会导致浏览器重复请求资源,从而影响页面加载速度。
  10. 网络安全策略较为严格:如果网络安全策略较为严格,可能会导致浏览器请求资源时遇到一些限制,从而影响页面加载速度。

二、 解决方案

图片和视频加载缓慢、导致首屏加载白屏的问题,通常可以从以下几个方面入手来解决:

1. 图片和视频的优化
2. 懒加载
3. 骨架屏
4. 代码优化

2.1、 图片和视频的优化

可以通过图片压缩、视频压缩等技术来减小文件大小,CDN 加速来加快资源加载速度,可以从以下几个方法入手:

1. 压缩图片或视频
2. 选择合适的图片或视频格式
3. 使用图片或视频 CDN 加速
4. 使用懒加载技术
2.1.1、压缩图片或视频

可以使用图片或视频压缩工具,将文件大小压缩至合适的大小。对于图片,可以使用在线图片压缩工具或者 Photoshop 等图片编辑软件进行压缩;对于视频,可以使用视频压缩软件,如 HandBrake 等进行压缩。

2.1.2、 选择合适的图片或视频格式

选择合适的图片或视频格式也可以减小文件大小。例如,对于图片,可以选择 JPEG 或者 WebP 格式,对于视频,可以选择 H.264 或者 H.265 格式。

2.1.3、 使用图片或视频 CDN 加速

可以使用图片或视频 CDN 加速,将图片或视频资源分布在全球各地的 CDN 节点上,从而加快资源的传输速度,提高页面加载速度。

2.1.4、Nginx中开启gzip
http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;client_max_body_size    200m;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;gzip_proxied any;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;
}

其中这一段为开启gzip,开启后对js,json,xml有一定的加速

    gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;gzip_proxied any;

补充说明:

  1. gzip on;
    • 启用Gzip压缩功能。开启此功能后,Nginx会压缩响应数据以减少传输体积。
  2. gzip_min_length 1k;
    • 指定Gzip压缩的最小响应体积。
    • 这里设置为1k(1千字节),意味着只有当响应体积大于1KB时才会进行压缩,避免对小文件进行不必要的压缩。
  3. gzip_buffers 4 16k;
    • 设置用于存储压缩结果的缓冲区数量和大小。
    • 4 16k表示Nginx会使用4个16KB的缓冲区来存储Gzip的压缩数据。
  4. gzip_http_version 1.1;
    • 指定Gzip压缩的最低HTTP协议版本。
    • 这里设置为1.1,意味着只有在客户端使用HTTP/1.1或更新版本时才会启用Gzip压缩。
  5. gzip_comp_level 2;
    • 设置Gzip的压缩级别,范围是1到9。
    • 2表示较低的压缩级别,压缩速度快,占用较少的CPU资源。较高的压缩级别(如9)会产生更小的文件,但会消耗更多的CPU资源。
  6. gzip_types
    • 指定哪些MIME类型的响应会进行压缩。
    • 这里列出了多种常见的类型,包括:text/plain(纯文本)、text/css(CSS样式表)、application/json(JSON数据)、application/javascript(JavaScript文件)、text/xmlapplication/xml(XML数据)等。
  7. gzip_proxied any;
    • 指定在何种情况下对通过代理的请求启用Gzip压缩。
    • any表示不论请求头中包含哪些信息,只要是代理请求都进行压缩。

三、压缩工具推荐

1、TinyPNG(亲测好用):

  • TinyPNG(tinypng.com)

TinyPNG 是一个免费的在线图片压缩工具,可以将 PNG 和 JPEG 格式的图片压缩至合适的大小,而且不会影响图片质量。

2、Compressor.io(compressor.io)

Compressor.io 是一个免费的在线图片压缩工具,可以压缩 JPEG、PNG、SVG 和 GIF 等格式的图片。它可以将图片压缩至较小的大小,而且不会影响图片质量。

3、Kraken(kraken.io)

Kraken 是一个在线图片优化和压缩服务,可以将 JPEG、PNG 和 GIF 等格式的图片压缩至最小的文件大小。Kraken 还提供了 API 接口,可以方便地集成到项目中。

4、ImageOptim(imageoptim.com)

ImageOptim 是一个免费的图片优化工具,它可以自动压缩 JPEG、PNG 和 GIF 等格式的图片,并且可以自动删除图片中的元数据和不必要的信息,从而减小文件大小。

image-20241214173323533

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

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

相关文章

MATLAB选取向量中最大的若干个值个值,并返回所在位置的函数

在 MATLAB 中,可以使用 maxk 函数来选取向量中最大的 ( k ) 个值,并返回它们的索引位置。maxk 函数非常方便,适用于需要获取前几个最大值的情形。 文章目录 语法 示例输出结果总结 语法 [M, I] maxk(A, k)A 是输入向量。k 是要选择的最大值…

PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)

分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…

Mvc、Springmvc框架

一.Mvc: 1.概念: MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 、View视图 、Controller控制层; 结构图: 二.Springmvc: 1.概念: springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计…

item2 for macos

安装Item2 brew install iterm2 查看终端类型 cat /etc/shells Mac OS X 10.15 已经将默认的shell从Bash换成了zsh,所以不用安装,10.15以前的可以使用下面的命令进行安装 brew install zsh 安装Oh My ZSH # curl sh -c "$(curl -fsSL https://ra…

PyTorch基本使用-自动微分模块

学习目的:掌握自动微分模块的使用 训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度,PyTorch 内置了名为 torch.autogra…

使用rust语言创建python模块(pyo3+maturin)

1. 首先使用conda创建python虚拟环境(已创建的可省略) >conda create --prefixE:\python_envs\rust_python python3.11 2. 激活python虚拟环境 conda activate rust_python 3. 安装maturin pip install maturin 4. 创建rust项目 >cd E:\py…

Linux 网络流量控制 - 实现概述

摘要 Linux 提供了一整套丰富的流量控制(traffic control)功能。本文档概述了相应的内核代码设计,描述了其结构,并通过描述一种新的排队策略来说明新元素的添加。 1 引言 最近的Linux内核提供了多种流量控制功能。Alexey Kuznetsov(kuznet…

哈希【C++实现】

目录 哈希1. unordered系列关联式容器2.unordered_map2.1unordered_map的文档介绍2.2unordered_map的接口介绍 3.unordered_set3.1unordered_set的文档介绍3.2unordered_set的接口 4.相关OJ题5.两种容器的区别5.1性能区别 6.底层结构(重要!!!…

文件包含漏洞下 日志文件的利用 session文件竞争

普及 日志文件记录了一下登录者的信息 访问者ip:127.0.0.1 访问日期 请求方式:GET 请求链接:/dvwa/phpinfo.php 请求参数:PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP协议:HTTP/1.1 返回转态码:200 返…

动态规划子序列问题系列一>最长数对链

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int findLongestChain(int[][] pairs) {Arrays.sort(pairs, (a,b)->(a[0]-b[0]));int n pairs.length;int[] dp new int[n];for(int i 0; i < n; i) dp[i] 1;int ret 1;for(int i 1; i < n; i){f…

uni-app创建微信小程序

UniApp 是一个基于 Vue.js 语法的跨平台开发框架&#xff0c;它允许开发者使用一套代码构建适用于 iOS 、 Android 、 Web 以及各种小程序和快应用的应用程序 一、环境搭建 安装使用教程&#xff1a;https://blog.csdn.net/YuanFudao/article/details/132384692 二、项目基本…

如何快速搭建若依管理系统?

1、下载若依管理系统前后端分离版代码至本地&#xff08;当前版本为RuoYi v3.8.8&#xff09;&#xff1a; RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分离权限管理系统&#xff0c;同时提供…

6.2 MapReduce工作原理

MapReduce工作原理涉及将大数据集分割成小块并行处理。Map任务读取数据块并输出中间键值对&#xff0c;而Reduce任务则处理这些排序后的数据以生成最终结果。MapTask工作包括读取数据、应用Map函数、收集输出、内存溢出时写入磁盘以及可选的Combiner局部聚合。ReduceTask工作则…

金融分析-Transformer模型(基础理论)

Transformer模型 1.基本原理 transformer的core是注意力机制&#xff0c;其本质就是编码器-解码器。他可以通过多个编码器进行编码&#xff0c;再把编码完的结果输出给解码器进行解码&#xff0c;然后得到最终的output。 1.1编码器 数据在编码器中会经过一个self-attention的…

创建vue3项目步骤以及安装第三方插件步骤【保姆级教程】

&#x1f399;座右铭&#xff1a;得之坦然&#xff0c;失之淡然。 &#x1f48e;擅长领域&#xff1a;前端 是的&#xff0c;我需要您的&#xff1a; &#x1f9e1;点赞❤️关注&#x1f499;收藏&#x1f49b; 是我持续下去的动力&#xff01; 目录 一. 简单汇总一下创建…

大模型底座 Transformer 的核心技术解析

1. 引言 说明目标 在深度学习领域&#xff0c;Transformer架构已成为近年来最重要的技术突破之一。它最早由Vaswani等人在2017年的论文《Attention is All You Need》中提出&#xff0c;迅速成为自然语言处理&#xff08;NLP&#xff09;和其他序列建模任务的核心工具。传统方法…

利用git上传项目到GitHub

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了&#xff0c;非常受欢迎&#xff0c;比之svn更好。 GitHub可以免费使用&#xff0c;并且快速稳定。 利用GitHub&#xff0c;你可以将项目存档&#xff0c;与其他人分享交流&#xff0c;并让其他开发者帮助你一…

联网功耗电流波形

飞行模式下&#xff0c;Wifi 可连接或不可连接的条件对比&#xff1a; 1. 基电流为 3.5 mA 的环境下, 网络不可连接时,会产生一个持续0.72s,平均电流为 54.8 mA 的电流波形 2. 基电流为 6.8 mA 的环境下, 网络可连接时,会产生一个持续4.64s,平均电流为 73.63 mA 的电流波形 …

【Sql优化】数据库优化方法、Explain使用

文章目录 一、金字塔优化模型二、SQL优化的利器&#xff1a;Explain工具1. Explain 的作用2. Explain 的用法 三、SQL优化方法&#xff08;后续文章细讲&#xff09;1. 创建索引减少扫描量2. 调整索引减少计算量3. 索引覆盖4. 干预执行计划5. SQL改写 四、通过 Explain 优化案例…

从〇开始深度学习(番外)——下载包

从〇开始深度学习(番外)——下载包 文章目录 从〇开始深度学习(番外)——下载包写在前面正文 写在前面 《从〇开始深度学习&#xff08;番外&#xff09;》系列主要记录一些细碎知识点和技能&#xff0c;与主线并不冲突。如果主线笔记中用得到番外篇的知识或技能&#xff0c;会…