秒级使网站变灰,不改代码不上线,如何做到?

news/2024/11/28 21:32:51/

注意:文本不是讲如何将网站置灰的那个技术点,那个技术点之前汶川地震的时候说过。

本文不讲如何实现技术,而是讲如何在第一时间知道消息后,更快速的实现这个置灰需求的上线。

实现需求不是乐趣,指挥别人去实现需求才是乐趣,你有没有过这种想法?我们老板就是这种想法。

 

最近发生了举国悲痛的事情,所以很多网站为了表示哀悼,听到消息后,将网站置灰了。

但有的网站呢,做的比较迅速,很快让程序员做了修改,上个线;

但有的呢,后知后觉,看见别人家的网站都这么做了,我们不这么做不好,我们也置灰一下吧。来,小王,置灰一下把网站,上个线,注意测试啊,别弄坏了。于是小王接到了一项重要任务。

 

那有一天宝岛被收复了,需要设置成大红色了,再把代码改成红色,再上个线?庆祝完了,再把代码改回来吗?

文本这里以简单的样式为案例

51275872749b450e9578a06d7d91b663.png 

 

目录

1、日常需求上线的过程 

2、本需求中的重点 

3、网站置灰或者置红的CSS代码

3、如何做到更快速使CSS代码生效

4、这样做会产生的问题 

5、消息触发机制 

6、但是每次都调用仍然会造成损耗 

7、何去何从


 

 

1、日常需求上线的过程 

日常需求上线经历了,产品的可行性分析阶段,要经过一些市场分析,数据分析,来决定这个需求是否值得做;

然后开始产出需求报告,需求文档,并且准备开始需求评审;

评审的过程,会有相关人员参与,而且一旦能够走到需求评审这一阶段,也肯定是要做的

然后就是开始排工期,相关人员排了工时,项目制定了工期,看跟其他项目是否冲突

开发人员实施阶段,可长可短

然后就是跟测阶段,测试结束

部署(本地部署、测试部署、预发部署、线上部署)完成,上线。

176efe36df7e4f5cb66aad05e12b89c3.png

2、本需求中的重点 

通过上图可见,每个需求或者每个公司,对于需求都会有灵活处理,

最灵活的莫过于老板发现一个契机,然后自己去开发,开发完直接上线

所以,本需求的重点在于上线的过程

 

3、网站置灰或者置红的CSS代码

还用刚才我们新建的DOM元素为例,这是正常的样式

div {color: blue;
}
button {width: 70px;height: 20px;line-height: 20px;background: blue;color: #FFF;text-align: center;
}<div class="box"><div>这里是网站内容</div><button>按钮</button>
</div>

置灰代码:

html {-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter: grayscale(100%);filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
}

 5f55477fd3d647d9ba65b9980d03f242.png

3、如何做到更快速使CSS代码生效

△ 这就需要借助另外一个平台,用来维护我们需要显示的更高优先级的CSS代码;

△ HTML页面呢也不能放在前端了,需要放到服务端去,Node Java的项目里都行;

以koa项目来举例,在渲染HTML页面之前,先发送请求,向另外的这个平台去发送请求,获取最新维护好的CSS代码

然后获取到之后渲染到HTML页面中,这样就可以不需要上线,还可以更快速的渲染优先级更高的置灰代码了。

b963f2fafc5941179113ce15c4d4b71a.png

doctype html
htmlheadtitle= titlestyle(type="text/css")html { -webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter: drop-shadow(#EFE2DA);filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}bodyblock content

 

4、这样做会产生的问题 

一旦这样做了,速度倒是很快了,但产生的问题是,页面每次刷新之前都会去调用一下第三方平台的接口,

△ 一旦访问量大了,对这个第三方配置平台会产生很大的压力;

△ 而且如果日常不需要置灰的情况下,平台无故的去调用,也是做了一个无用功

 

5、消息触发机制 

这就涉及到一个消息触发机制,什么意思呢?

△ 在我们的koa项目里添加一个接口方法A,用于接收第三方平台的调用;

△ 同时添加全局变量,例如B = false,当监测到B为false的时候,并不需要每次刷新页面都去调用第三方那个全局css的数据;

△ 就是说第三方平台需要和我们的koa项目产生一定的关系。当我们决定要发送这段置灰css代码做为一条消息的时候,去触发这个接口方法A

△ 接口方法A此时需要改变一个全局变量,就是这个全局变量B,此时改为true.

△ 那么当下次再有用户刷新页面的时候,监测到B为true ,则开始调用最新的css那段代码数据

ded6a003a2f04f73872ea1a764028b1d.png

 

6、但是每次都调用仍然会造成损耗 

即便我们使用了这个消息触发机制,并且成功了,但近几天一定是时刻都要置灰的,而且每次请求页面都要调用这个第三方接口,仍然是一个损耗。

这个时候,我们可以添加一个缓存,将获取到的css数据做为缓存;

每次请求页面的时候,既要判断当前的B是否为true,又要判断是否有缓存数据,最后再决定是否要发送请求,从而降低一定的损耗。

 

7、何去何从

如果是单纯的前端上线呢,虽然后知后觉,但不用费这么多前期准备得功夫;

如果把这一套做下来呢,不仅可以用于文本的场景,还可以利用到更多的场景种,而且可以做到第一时间收到消息后,快速的发布需求。

你觉得哪种更适合你当前的团队呢?

 

 

 

 

 


http://www.ppmy.cn/news/1641.html

相关文章

求二叉树中最大的二叉搜索子树的头节点

求二叉树中最大的二叉搜索子树的头节点 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;求二叉树中最大的二叉搜索子树的头节点 CSDN&#xff1a;求二叉树中最大的二叉搜索子树的头节点 题目描述 给定一棵二叉树的头节点head&#xff0c; 返回这颗二叉树中…

对文本进行情感分析(分类)snownlp模块

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 对文本进行情感分析(分类) snownlp模块 选择题 对于以下python代码表述错误的一项是? from snownlp import SnowNLP myText我爱学python&#xff01; print("【显示】text"…

项目管理逻辑:日志\周报\月报, 一直要求写, 有用吗?

目录 1.公司管控项目: 2.什么是项目的生命周期? 3.项目管控举例 3.1装修项目阶段划分 3.2研发项目 4.控制项目的核心 1.公司管控项目: 写周报,日报,项目问题照样失控, 其实本质上的问题就是 我们没有如何设置好项目的阶段和项目的里程碑. 项目管理的五个阶段 2.什么是…

41岁了,我该何去何从?

大家好&#xff0c;我是记得诚。 很多新人很迷茫&#xff0c;我想说的是&#xff1a;人人都会迷茫&#xff0c;下面这个41岁的老大哥也迷茫了&#xff0c;很多时候选择真的是一个难题。 下面是对话&#xff0c;大家可以看看。 问&#xff1a; 您好&#xff0c;不好意思打扰…

JavaWeb--JDBC核心技术

JavaWeb--JDBC核心技术JDBC核心技术第1章&#xff1a;JDBC概述1.1 数据的持久化1.2 Java中的数据存储技术1.3 JDBC介绍1.4 JDBC体系结构1.5 JDBC程序编写步骤第2章&#xff1a;获取数据库连接2.1 要素一&#xff1a;Driver接口实现类2.1.1 Driver接口介绍2.1.2 加载与注册JDBC驱…

(一)LTspice简介

文章目录前言一、举例1.1、RC滤波1.2、仿真结果二、软件安装总结前言 LTspice是一款高性能SPICE仿真器软件&#xff0c;包括原理图捕获图形界面。可探测原理图以产生仿真结果&#xff0c;通过LTspice内置波形查看器轻松探索。与其他SPICE解决方案相比&#xff0c;LTspice的增强…

uImage的制作工具mkimage详解(源码编译、使用方法、添加的头解析、uImage的制作)

1、mkimage工具的源码 (1)mkimage是uboot下面的一个工具&#xff0c;用来将zImage制作成uImage&#xff0c;制作内核启动镜像(给zImage镜像添加64字节的头信息成uImage)&#xff1b; (2)mkimage的源码在"uboot/tool"目录下&#xff0c;在编译uboot时默认会编译出mkim…

前端环境变量及vite中本地环境配置实践

前言 前端在之前并没有工程化的概念&#xff0c;甚至开发环境、测试环境、生产环境全靠大家手动配置。 有了nodejs之后&#xff0c;环境变量 &#xff08;environment variables&#xff09;这个概念&#xff0c;便慢慢进入了前端的视野&#xff0c;方便了前端各种环境自动化…