在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

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

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

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

最近发生了举国悲痛的事情,所以很多网站为了表示哀悼,听到消息后,将网站置灰了。
但有的网站呢,做的比较迅速,很快让程序员做了修改,上个线;
但有的呢,后知后觉,看见别人家的网站都这么做了,我们不这么做不好,我们也置灰一下吧。来,小王,置灰一下把网站,上个线,注意测试啊,别弄坏了。于是小王接到了一项重要任务。

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

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

在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

目录

1、日常需求上线的过程

2、本需求中的重点

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

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

4、这样做会产生的问题

5、消息触发机制

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

7、何去何从

1、日常需求上线的过程

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

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

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

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

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

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

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

在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

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>&#x8FD9;&#x91CC;&#x662F;&#x7F51;&#x7AD9;&#x5185;&#x5BB9;</div>
   <button>&#x6309;&#x94AE;</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);
}

在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

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

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

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

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

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

在收到消息后秒级使网站变灰,不改代码不上线,如何实现?
doctype html
html
  head
    title= title
    style(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);
    }
  body
    block content

4、这样做会产生的问题

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

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

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

5、消息触发机制

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

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

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

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

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

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

在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

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

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

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

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

7、何去何从

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

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

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

Original: https://blog.csdn.net/xingyu_qie/article/details/128170344
Author: 经海路大白狗
Title: 在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/794446/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 这里聊聊扫地机的 IOT 开发

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」 https://mp.weixin.qq.com/s/Xszi1YFxVqpJ7OcOt-lrqw 消费…

    Python 2023年10月22日
    034
  • Django admin实现TextField字段changelist页面换行、空格正常显示

    问题背景 在Django后台的使用admin view绑定model后,可以很方便的通过网页对底层的数据表进行增删查改操作。在实际工作中有一些数据字段会存储了json或者其他包含换…

    Python 2023年5月24日
    094
  • Transformers 库的基本使用

    本内容主要介绍 Transformers 库 的基本使用。 1.1 Transformers 库简介 Transformers 库是一个开源库,其提供的所有预训练模型都是基于 tr…

    Python 2023年9月27日
    038
  • python字符串的一些骚操作和列表的一些操作

    字符串: 注意:字符串是不能修改的,它不像列表一样,可以修改其中某个元素,字符串常用操作:1、可以用 + 来实现对多个字符串的拼接产生一个新的字符串;可以将字符串与数字相乘重复打印…

    Python 2023年10月31日
    032
  • 手把手教你用七牛云存储图片

    环境说明:Django + Vue + Element-ui ​ 在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图…

    Python 2023年8月6日
    043
  • matplotlib常见绘图函数

    plt.scatter()函数用于生成一个scatter 散点图。 matplotlib.pyplot.scatter(x, y, s=20, c=’b’, marker=’o’,…

    Python 2023年9月3日
    056
  • python如何实现网络测试,了解一下speedtest-cli…

    它是一款面向开发人员的互联网连接测量工具。Speedtest CLI 为命令行带来 Speedtest 背后的可信技术和全球服务器网络。 【阅读全文】 Speedtest CLI …

    Python 2023年5月24日
    086
  • Python+Pytest+Jenkins+allure发送+钉钉机器人通知

    1.Jenkins基础配置信息 1.1Jenkins基本信息: 概述:Jenkins设置钉钉机器人通知,网上版本很多,代码也比较繁琐,细节方面也没说特别说明,会导致不少人走弯路,经…

    Python 2023年9月12日
    059
  • Java注解与原理分析

    一、注解基础 二、注解原理 三、常用注解 1、JDK注解 2、Lombok注解 四、自定义注解 1、同步控制 2、类型引擎 五、参考源码 使用的太多,被忽略的理所当然; 一、注解基…

    Python 2023年10月15日
    026
  • 用一个例子理解拉格朗日乘数法解决等式约束优化问题

    首先我们来看看一个实例: [\begin{aligned} &min &f(x,y)&=x^2+y^2\ &s.t. &xy&=3 …

    Python 2023年10月20日
    053
  • 基于Java的图书管理系统(附源码和课件)

    项目介绍 图书管理系统作为图书馆数字化、智能化平台,是提升书籍管理能力的重要举措,为更好地发挥管理系统的技术优势,针对管理系统使用需求,本文尝试以Java技术为框架,通过必要的编码…

    Python 2023年9月26日
    031
  • python的第三方包——Matplotlib(1)

    一、关于Matplotlib Matplotlib是Python中一个二维绘图包,能够非常简单的实现数据可视化。 Matplotlib图像大致可以分为如下4个层次结构: canva…

    Python 2023年9月2日
    076
  • 一行代码 网页变灰

    背景 想必大家都感受到了,很多网站、APP 在前两天都变灰了。先来感受一下变灰后的效果。 .让网页变为黑白配色,是个常见的诉求。而且往往是突如其来的诉求,是无法预知的。当发生这样的…

    Python 2023年10月27日
    027
  • Django的restframework接口框架自定义返回数据格式

    在前后端分离是大趋势的背景下,前端获取数据都是通过调用后台的接口来获取数据微服务的应用越来越多。Django是Python进行web应用开发常用的web框架,用Django框架进行…

    Python 2023年8月3日
    084
  • Pandas 导入excel、csv、txt 文件数据

    Python 数据分析 导入.xlsx 文件 * 基本导入 指定导入 指定行索引 指定列索引 指定导入行 指定导入列 导入.csv 文件 * 直接导入 指明分隔符 指明读取行数 指…

    Python 2023年8月16日
    056
  • Pandas删除缺失数据函数–dropna

    在pandas中,dropna函数分别存在于 DataFrame、 Series和 Index中,下面我们以DataFrame.dropna函数为例进行介绍,Series和Inde…

    Python 2023年8月7日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球