当前位置: 首页 > article >正文

网站性能优化篇

网站性能优化篇

    • 性能优化---页面加载性能方面
    • 优化性能优化方面的问题

性能优化考虑的几个层面,重点是页面加载时候的优化

在这里插入图片描述

性能优化—页面加载性能方面

  1. 减少http请求,比如用雪碧图(现在一般用iconfont(表面是图片,实际是字体)),文件合并等(CSS文件合并、JS文件合并等等)
  2. 减少文件的大小(资源压缩,图片压缩,代码压缩)
  3. 使用CDN,比如20M的图片,如果放在html中可能造成阻塞,但是放CDN的话不会。
  4. SSR服务器渲染,预渲染。
  5. 现在浏览器性能都很强,一般DOM操作对浏览器影响不大。如果要优化的话,可以考虑懒加载、以DOM碎片的形式增删改查DOM等操作。(无屌所谓)

动画方面的性能优化:如果将来有大部分的Dom需要移动,首选translate和定位position。

现在主流的优化方案:
在这里插入图片描述

优化性能优化方面的问题

当年字节跳动有个面试题:
如何让页面渲染20万条数据?

我个人认为最好的解决方案是把后端的狗逼打一顿,把20万条数据发过来???

这个问题如果真的发生了,也有解决方案:

  1. 前端主动分页
  2. 使用虚拟列表----vue-virtual-scroll-list

如果一个页面全是图片,如何给这个页面写个懒加载?
即实现滚动条滚动到某个高度就加载下一页的数据

//原理:滚动条到顶部的距离 + 窗口高度 > 文档的总高度 + 20     /*我这里将滚动响应区域高度取20px*/;

下面有个简单的demo

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Simple HTML Template</title>
	<!-- Add some style to the page -->
	<style>
		body {
			background-color: lightblue;
		}
		h1 {
			color: white;
			text-align: center;
		}
		.nodisplay1{
		   display:none;
		}
		.nodisplay2{
		   display:none;
		}
		.nodisplay3{
		   display:none;
		}
		.nodisplay4{
		   display:none;
		}
	</style>
</head>
<body>
	<h1>This is a simple HTML template</h1>
	<p>Here's some text to fill the page.</p>
	<div id="divTest">
	   	<img src='dogbg.jpg' />
		<img src='dogbg.jpg' />
		<img src='dogbg.jpg' />
		<img class="nodisplay1" src='dogbg.jpg' />
		<img class="nodisplay1" src='dogbg.jpg' />
		<img class="nodisplay2" src='dogbg.jpg' />
		<img class="nodisplay2" src='dogbg.jpg' />
		<img class="nodisplay3" src='dogbg.jpg' />
		<img class="nodisplay3" src='dogbg.jpg' />
		<img class="nodisplay4" src='dogbg.jpg' />
		<img class="nodisplay4" src='dogbg.jpg' />
	</div>
	<!-- Add some functionality to the page with JavaScript -->
	<script>
        // 原理:滚动条到顶部的距离 + 窗口高度 > 文档的总高度 + 50     /*我这里将滚动响应区域高度取20px*/;
		// 如果这个判断为true则表示滚动条滚动到了底部。
		
		
		 //获取滚动条到顶部的距离,也就是页面顶部被滚动条顶上去的高度
		function scrollTop(){
			return Math.max(
				//chrome
				document.body.scrollTop,
				//firefox/IE
				document.documentElement.scrollTop);
		}
		
		//获取页面文档的总高度
		function documentHeight(){
		//现代浏览器(IE9+和其他浏览器)和IE8的document.body.scrollHeight和document.documentElement.scrollHeight都可以
			return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);
		}
		
		// 窗口的高度
		function windowHeight(){
			return (document.compatMode == "CSS1Compat")?
			document.documentElement.clientHeight:
			document.body.clientHeight;
		}
		
		window.addEventListener('scroll', handleScroll, true)
		
		function handleScroll(){
		    if(scrollTop() + windowHeight() >= (documentHeight() - 20)){
				addData();
			}
		}
		
		function addData() {
		    //alert('add');
			let img1=document.getElementsByClassName('nodisplay1')[0];
			console.log(img1)
            img1.classList.remove('nodisplay1')
            // 判断有没有nodisplay1 
			// 有的话就return,没有的话,接着移除nodisplay2
			// 以此类推
		}
	</script>
</body>
</html>

http://www.kler.cn/a/3271.html

相关文章:

  • C#,入门教程(05)——Visual Studio 2022源程序(源代码)自动排版的功能动画图示
  • 【PyTorch】3.张量类型转换
  • React第二十五章(受控组件/非受控组件)
  • 为AI聊天工具添加一个知识系统 之69 详细设计 之10 三种中台和时间度量 之2
  • Android中Service在新进程中的启动流程
  • 7-Zip Mark-of-the-Web绕过漏洞复现(CVE-2025-0411)
  • asio(八)、异步TCP服务器
  • Sass(Scss)学习
  • java 多线程,线程池
  • Python用湖南天气详情数据(可惜没雨),进行简单的可视化分析
  • Mybatis(四):自定义映射resultMap
  • 入侵检测——如何实现反弹shell检测?
  • 会声会影2023专业旗舰版新功能介绍
  • Linux - 进程概念
  • 机器学习----线性回归
  • 第十四届蓝桥杯三月真题刷题训练——第 22 天
  • ChatGPT 有哪些神奇的使用方式?
  • 【Vue2从入门到精通】详解Vue.js的15种常用指令及其使用场景
  • 设计循环队列(图示超详解哦)
  • 计网之HTTP协议和Fiddler的使用
  • C++之模拟实现string
  • “两会”网络安全相关建议提案回顾
  • 集合之HashMap 1.7总结
  • windows渗透(sam、system文件导出)
  • css学习14(多媒体查询)
  • Reids中的有序集合Zset