戳此看大厂架构师分享需求分析、问题定义、方案设计、研发实现、部署落地、持续运营的实践案例
写点什么

成人网站 pornhub 技术栈首度公开-金马国际

  • 2019 年 11 月 21 日
  • 本文字数:2865 字

    阅读完需:约 9 分钟

成人网站在推动 发展方面所起到的作用无可辩驳。从突破浏览器的视频能力限制,到利用 推送广告(防止被广告拦截器拦截),你必须不断想出各种聪明的办法,让自己处在 web 技术创新的最前沿。


最近,我有幸采访了大型成人网站 pornhub 的一位 web 开发工程师,了解了相关的开发技术、web api 的改进,以及作为成人网站开发工程师是一种怎样的体验。


注意:因为成人网站这个行业竞争相当激烈,有一些问题他们不能回答我,这一点我表示理解。


成人网站需要显示大量的图像内容,在开发过程中,你是否使用了大量的图片和视频占位符?开发过程中的内容体验和最终产品差距大吗?

实际上,在开发这个网站时我们并没有使用占位符!归根结底,代码和功能才是最重要的东西,至于界面什么的,到了这个时候我们已经很熟悉了。刚开始时有一点难度,但很快我们就适应了。


在开发过程中,你们是如何模拟直播视频流和第三方广告脚本的?它们都是很重要的资源。

播放器被分为两个组件,基本组件实现了核心功能,用于触发事件。开发是单独进行的,在进行集成时,我们需要用到第三方脚本和广告,这样可以尽早发现问题。对于一些特殊情况,我们会与广告主合作,通过手动的方式来触发一些随机事件。


一般页面上至少会有一个视频、一些 gif 广告、一些直播预览和其他视频的缩略图。你是如何测定页面性能的?以及如何尽量提升页面的性能?> 我们使用了一些测评系统。

  1. 播放器会将视屏播放的性能和用户播放情况发送给我们;

  2. 我们使用了第三方的 rum 系统;

  3. 我们使用了 webpagetest,这样就可以知道在某个时段发生了什么事情。


我假设播放器是前端的一个最重要也最复杂的功能。在视频前面插入广告、标记视频的关键部分、改变播放速度,等等,你是如何保持播放器的性能、功能和稳定性的?

我们有一个专门负责开发播放器的团队,他们的首要任务是持续地监控播放器的性能。我们用上了所有可用的工具:浏览器性能工具、webpagetest、性能指标,等等。每次在发布更新之前,我们都会进行一轮严格的 qa 来保证稳定性和质量。


视频团队有多少专职开发人员?有多少前端开发人员?

我只能说,如果从整个产品的规模来看,我们的团队规模算是中等的。


在从事成人网站开发期间,你看到前端领域经历了哪些发展?有哪些新的 web api 给你带来很大的帮助?

我看到前端技术在很多方面都有进步。

  1. 从使用纯 css 到使用 less 和 mixin,再到使用灵活的栅格系统和图像标签来适应不同的分辨率和屏幕大小;

  2. 和 逐渐淡出了我们的视线,我们回到了更加面向对象的纯 编程。一些框架在某些场景下也起到非常有趣的作用;

  3. 我们很喜欢新的 intersectionobserver api,用它来加载图像非常高效;

  4. 我们还使用了画中画 api,让视频漂浮在页面上,不过现在还在争取用户对这个想法的反馈。


展望未来,有没有哪些 web api 是你希望发生变化、改进的?或者出现新的 web api?> 我们希望这些 api 能够发生变化或改进:beacon、webrtc、service worker 和 fetch。

beacon:在 ios 上有些问题,对 pagehide 事件支持得不太好;

fetch:没有下载进度,也没有提供拦截请求的方式;

webrtc:在进行直播时,如果分辨率不够大就会有所限制;

service worker:调用 navigator.serviceworker.register 不会被 service worker 的 fetch 事件处理器拦截到。


webvr 在过去几年已经有所改进。目前来看,它的作用有多大?成人网站会投入多大精力来支持 vr 内容?pornhub 的 webvr 有涉及触觉技术吗?

我们正在研究如何将 webxr 应用在沉浸式空间场景中。作为最大的内容分发平台,我们有必要为用户提供让他们能够按照自己的方式来体验网站内容的机会。但我们还在探索,在使用这些新媒体时,内容和平台应该是什么样子。

我们是支持 、计算机视觉和虚拟主播的一个主要平台,我们将继续推动新技术的发展。


每个页面上都有不同类型的媒体和内容,对于桌面版或移动版来说,最需要考虑的东西是什么?

我们主要考虑操作系统和浏览器对功能方面的限制。比如,ios 和 android 在访问权限和功能方面就非常不一样。

一些 ios 设备不允许在全屏时使用自定义播放器,它们会强制使用原生的 quicktime 播放器。而 android 则给了我们完全的控制权限,可以在全屏时使用我们的播发器。

另一个例子是 hls 视频流,ie 和 edge 对 hls 视频流质量非常挑剔,所以我们需要控制视频的质量,否则在播放时就断断续续或者出现重影。


目前 pornhub 可以支持的最低浏览器版本是哪个?现在还支持 ie 吗?

我们支持 ie 很长时间了,但最近不支持 ie 11 之前的版本。另外,我们也停止支持 flash 播发器。我们现在主要支持 chrome、firefox 和 safari。


可以分享一下 pornhub 的技术栈吗?从服务器端到前端,你们使用了哪些库?

基本上,我们使用了这些东西:

/。

其他技术还包括 varnish、elasticsearch、nodejs、go 语言、vertica。

前端方面,我们主要使用了纯 javascript。我们在逐步淘汰 jquery,并开始使用框架,比如 vue.js。


在外行看来,成人网站的网页上一般充斥着各种视频缩略图、视频、直播和广告。从开发者的角度来看,是什么东西让一个成人网站变得与众不同?

我们努力让每一个品牌都具备一定程度的独特性,不同的内容、界面体验和功能,还使用了很多不同的算法。


在面试 pornhub 时,你是怎么想的?你有犹豫过吗?如果有,又是怎么消除这种情绪的?

我没有感到有什么不妥,毕竟这个挑战对我来说充满了吸引力。一想到有数百万人会用到我开发的东西,我就感到很兴奋。这个想法很快就得到了验证,当我开发的功能第一次上线时,我感到很自豪,我还叫我的朋友们也去看看!成人网站永远都不会消亡,它为我们提供了稳定的工作来源。


与开发一般的网站相比,开发成人网站可能会有所不同。当你告诉你的朋友、家人和熟人自己在开发成人网站,你会觉得这是一种耻辱吗?你会犹豫告诉他们这些吗?

我为自己开发的东西感到自豪,我身边的人都知道,也很喜欢它们。这也成了我们的茶余饭后的谈资,非常有意思。


你也在其他地方开发过其他网站,在 pornhub 的工作氛围有什么不同吗?

这里的氛围非常轻松友好,我不觉得跟在其他地方有什么不同。


作为前端开发人员,你需要与哪些团队密切接触?你们平常常用哪些交流方式?

我们需要与后端开发人员、qa 和产品经理打交道。大部分时间我们会跑到各自的工位上讨论问题,其次是使用聊天工具(microsoft teams),然后是电子邮件。


最后,作为一名在成人网站工作的开发工程师,你还有什么想要分享的吗?

我非常高兴能够参与开发这个有如此大规模用户的产品。我们身处技术发展的最前沿,这让一切都变得有趣且颇具挑战性。


后记

这个采访很有启发性。我很惊讶他们在开发时居然没有使用图像。pornhub 走在 web 技术的最前沿——webxr、webrtc 和 intersection observer api。我也很高兴看到他们开始逐步淘汰 jquery,因为现在的 web api 很给力。


我很想从他那里挖到更过有关技术和性能的细节,我敢肯定他们的源代码里有很多值得一学的东西。换了是你,你会想问哪些问题?


原文链接



2019 年 11 月 21 日 14:2355901
前 infoq 主编

发布了 408 篇内容, 共 343.3 次阅读, 收获喜欢 1885 次。

关注

评论 11 条评论

发布
php确实厉害。但是一些公司也在逃离php
2020 年 01 月 06 日 20:13
回复
可以关注约拍宝
2020 年 01 月 03 日 18:18
回复
感觉你在开车,但是没有证据
2019 年 12 月 04 日 20:23
回复
大部分情况下,php都能非常好的满足web业务的需求。尤其是中小规模网站,php因为它的高效和简单,更是首选。
2019 年 11 月 28 日 10:30
回复
没有seqing(以下简称sq)业就没有互联网的发展.以前的人只能在杂志上看s图,最后2g时代手机上可以看相片,也可以看3gp格式的视频,3g时代手机上可以播放更清晰的视频了,屏幕分辨率得到了跨越式的进化,然后步入4g时代,各种非法直播app,手机用流量随时都能看,国家的提速降费实施后,电脑上在线1080p视频也可以流畅播放.5g了,这不有些vr的sq影片和设备已经开发出来了...sq,真的是除了战争之外对社会前进最有推动力的行业了!!!
2019 年 12 月 03 日 17:09
回复
实用
2019 年 11 月 27 日 17:09
回复
不愧是p(拍)h(黄)p(片), 面向名字技术选型
2019 年 11 月 25 日 11:52
回复
你个小机灵鬼
2019 年 11 月 28 日 11:56
回复
傻逼,真他妈好笑
2019 年 12 月 24 日 00:01
回复
php牛逼
2019 年 11 月 22 日 10:22
回复
php语言到现在还是可以做出最好的网站,云计算kubernetes的兴起让各个语言技术栈充分竞争.
2019 年 11 月 21 日 14:30
回复
没有更多了
  • mozilla刚刚发布了firefox 29版本。在这一版本中,针对用户界面和asm.js的性能提升方面做出了一些改善,为开发者提供了更多新的web api,默认启用了promise并且引入firefox sync,除此之外,此次更新还包括多个安全方面的补丁。

  • 本次分享介绍 mpeg-dash 相关知识及 web mpeg-dash 播放器实践优化及未来展望。

  • 长期存在并广泛应用的 gif 格式存在图像质量损失严重和体积庞大等不足。在最新的 safari 浏览器预览版中,可以在标签播放视频,满足了和动态图一样的需求。经过对比测试,标签下视频的各项性能均优于 gif 格式。本文为你详解这项技术的现状和未来前景。

  • 使用率不断增长的html5,已经被广泛看做是传统的桌面和新兴移动web上的主要开发平台之一。只服务于此平台的javascript框架业已开始兴起。

  • 为什么现在大家都在谈论h5?你真的深入理解了h5吗?h5究竟是什么?它的优点在哪里?

    2018 年 6 月 16 日

  • 在本文中,我将介绍 10 个不那么流行的 web api。不那么流行并不意味着它们没有用处。你可以在项目的各种用例中使用它们。

  • 2019 年 12 月 26 日

  • 由peter lubbers、brian albers和frank salim编著的《html5专业开发》(pro html5 programming)一书,旨在帮助开发者们构建能够挖掘当今浏览器全部能力的html5应用。该书主要涉及领域有:communicatoin apis、convas api、geolocation api、web sockets api、web storage api、web workers api以及html5音频与视频。

  • 近日,stanislas polu公布了breach的第一个公开测试版。breach是一个基于chromium和node.js构建的模块化浏览器,它为开发者提供了全面定制其外观和行为,并进行扩展的自由发挥的空间。

  • flv.js是由javascript语言开发的,其最大优势是即使不安装flash插件也可以在浏览器上播放flv文件。

    2019 年 10 月 5 日

  • 在我的网站上,我发现金马国际主页的大小超过了1.1mb,其中图像占了88%。我也意识到我提供的图片比实际需要的要大(比如分辨率)。显然,还有很大的优化空间。

  • deploying html5一书的作者aditya yada曾是thoughtworks的高级构架师,如今是一家咨询公司的cto。在这本书中,他详细介绍了html 5的标准组件,解释了各主流浏览器实现这些组件的方式,并通过示例代码讲解了各组件的用法。

  • 2018 年 6 月 13 日

  • 五一假期,喜欢音乐的朋友一定在草莓音乐节享受了一次饕餮大餐,本次草莓音乐节网站首次使用html5技术开发,采用了诸如parallax视差滑动效果、h.264视频背景和canvas技术,笔者特别采访到 @logicdesign官方 负责此项目的技术团队。d

  • 根据mefeedia的调查,当前internet上发布的视频中,有54%都提供了html5的格式;并且adobe和sencha都发布了新的html5编辑工具,这些都显示html5已经起飞。

  • 我们的团队算是微信小程序比较早期的实践者,我也有一些思考和经验,在这里跟大家分享。

    2018 年 11 月 23 日

  • 今天,我跟你聊了下跨端方案的选择,从长远考虑你可以选择 flutter。

    2019 年 6 月 13 日

  • 4月9日,微软在其官方博客上正式发布了基于chromium的第一个dev和canary版本的edge,据了解,dev频道周更,canary频道每天都会更新,现在,你可以在windows 10 上使用它们,beta版本还尚未发布。

发现更多内容

云原生场景的智能化运维演进和实践

云原生场景的智能化运维演进和实践

网站地图