热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2019年4月第四周_4月基础设施的变化可能会导致故事页面提升

2019年4月第四周黑客中午产品更新:我们在2020年4月部署的概述他们说:“四月的淋浴带来五月的花朵。”以我们为例,4月的基础架构变更将

2019年4月第四周

黑客中午产品更新:我们在2020年4月部署的概述

他们说:“四月的淋浴带来五月的花朵。” 以我们为例,4月的基础架构变更将为我们的读者和未来的撰稿人带来很多好处。

万英尺概述

让我们看一些数据。

首先,我们现在有几个活动存储库。 首先,让我们看一下运行app.hackernoon.com , hackernoon/green的存储库:

似乎我在20号进行了一次鼓舞yarn.lock集会,但实际上,我只是删除了yarn.lock (我们现在使用npm )。 那么所有活动都发生在哪里? 我们整天都在闲逛吗? 理查德·法拉是谁?

回答最后一个问题: Richard Kubina是我们的最新雇员! 他是一名兼职开发人员,是我的一个朋友,目前正在进行统计数据大修-稍后再进行介绍。

至于我们是否都懈怠:当然不是! 看一下,hackernoon.com引擎的图表, hackernoon/nextgreen :

此图讲述了一个故事。 Storm显然添加了许多代码,在这种情况下,添加了许多样板代码,基础结构和设置代码,以便我们可以使用Next.js有效地进行编码。 我尽我所能进行了贡献,但这主要是错误修复,对系统在Next之前的功能的更正。

当然,原始数字并不能说明全部情况。 提交次数和代码行无关紧要。 用例呢。 修复。 话说。 因此,完整的故事:

当鸣则已一鸣惊人...

从传统的CDN到使用Next.js以及SSG(静态站点生成),对我们来说,4月在很大程度上是一个转变。 这给我们带来了一系列重大但并非不可克服的挑战。 首先,我们在这个新系统中暴露出的数据存在很多不一致之处-我们能够在生成页面时将它们大幅度地淘汰掉,从而使所有故事都可以用相同的逻辑进行渲染。

在其他情况下,我们只是存在错误。 任何新系统,尤其是这种规模的系统,都将涉及大量的错误修复。 值得庆幸的是,这些错误中的绝大多数都相当容易修复,无论它们是显示错误,行为的意外更改还是仅仅是我们在过渡中错过的斑点。

与CDN相比,该系统具有多个优点。 例如,如果我们要显示动态数据,那么将其与静态HTML和JS的旧系统进行比较时,这非常容易,几乎是犯罪的。 不仅如此,如果我们要更改页面,那么更改一个组件而不是更改7个或8个静态模板,使缓存无效并根据需要在部署时重新生成页面要容易得多,而不是手动重新生成所有页面。东西。 认真地讲,每当我们更改标题或导航等内容时,我们都必须运行脚本来重新生成旧页面,这很麻烦。

对于这种新体系结构,我们仍然试图解决一些不太理想的行为。 我们并不总是能够控制所需的缓存,因此按需失效是开发团队的主要愿望。 值得庆幸的是,称为“增量构建”的功能将为至少一个问题提供解决方案,在该问题中,故事更新不会立即显示(不要担心-我们有您的更改,它们会在约15分钟内显示出来)现在)。

...有时,它会...

更重要的是,我们有一个稍有不同的缓存问题。

我们从Firebase托管开始。 它可以自动缩放,可以很好地处理Next.js,但它不是为Next.js构建的。 此外,由于我们的捆绑包达到了100MB的限制(主要是预生成页面),因此我们开始出现部署问题。 这就像试图将一个方形钉插入一个圆Kong中一样。

因此,我们将阅读器体验的相当一部分转移到Zeit,或者现在称为Vercel 。 简而言之,蜜蜂的膝盖弯曲。 您将其连接到Github(或Gitlab或Bitbucket)和Bingo bango,部署是自动的。 只需将您的分支合并到master。 哦,当您创建PR时,它会创建一个预览分支,并将您的代码部署给所有人尝试。

还有一个或两个重要的问题,我们仍在与NextJS一起工作-这是一个我不愿出于对Vercel的尊重和对他们SwiftReact的赞赏而不愿透露细节的问题。 只是需要解决的问题,仅此而已。 总的来说,10/10会推荐。

啊,但是我漫步。

...但最终,花开了。

总体而言,此举对Vercel一直比较顺利-极少数的问题,而不是对整个CDN到Next.js移动(甚至是不 )。 除此之外,我们一直在努力:

  • 使用新的缓存层彻底减少负载,对统计基础结构进行了全面的检查。
  • 比Firestore和Google Cloud Platform默认提供的备份系统更可靠(是的,我们仍然托管数据,存储以及GCP上的几乎所有其他内容)。
  • 改进内部API上的身份验证。
  • 使在本地测试API成为可能(没有这个,我们花费了令人惊讶的长时间)。
  • ...我在这里对其他PR进行了描述,但我们只能说,它们都以“修复”一词开头

tl; dr

那么,这对您有什么帮助?

  • 得益于新的hackernoon.com基础架构,您的阅读体验将比过去更频繁,更快速地得到改善。 在初步数据中,故事页面上的页面时间增加了14%。
  • 我们已修复了数量众多的错误。 该站点每天都在变得更加稳定-我们正处于这样一个地步,我们可以花更少的时间来稳定时间,而可以花更多的时间来添加基本功能。
  • 我保证,您的统计信息将很快恢复! 理查德的努力工作,使他们的方式更快,更可靠的比他们去过。 敬请关注!
  • 哦,我提到您现在可以更改自己的句柄了吗? 😁
  • 通常,开发将更快地进行,新功能和修复将更频繁地部署。

在接下来的一三个月中,您会为几种即将推出的功能而peel之以鼻,尤其是为我们亲爱的读者服务的功能。 then'直到继续,继续前进!


翻译自: https://hackernoon.com/april-platform-shift-brings-may-time-on-story-page-lift-bo1kv3zyx

2019年4月第四周



推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
author-avatar
crazyuzy327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有