我采访了一位 Pornhub 工程师,聊了这些纯纯的话题
moboyou 2025-07-16 19:50 5 浏览
成人网站在推动 Web 发展方面所起到的作用无可辩驳。从突破浏览器的视频能力限制,到利用 WebSocket 推送广告(防止被广告拦截器拦截),你必须不断想出各种聪明的办法,让自己处在 Web 技术创新的最前沿。
最近,我有幸采访了大型成人网站 Pornhub 的一位 Web 开发工程师,了解了相关的开发技术、Web API 的改进,以及作为成人网站开发工程师是一种怎样的体验。
注意:因为成人网站这个行业竞争相当激烈,有一些问题他们不能回答我,这一点我表示理解。
成人网站需要显示大量的图像内容,在开发过程中,你是否使用了大量的图片和视频占位符?开发过程中的内容体验和最终产品差距大吗?
实际上,在开发这个网站时我们并没有使用占位符!归根结底,代码和功能才是最重要的东西,至于界面什么的,到了这个时候我们已经很熟悉了。刚开始时有一点难度,但很快我们就适应了。
在开发过程中,你们是如何模拟直播视频流和第三方广告脚本的?它们都是很重要的资源。
播放器被分为两个组件,基本组件实现了核心功能,用于触发事件。开发是单独进行的,在进行集成时,我们需要用到第三方脚本和广告,这样可以尽早发现问题。对于一些特殊情况,我们会与广告主合作,通过手动的方式来触发一些随机事件。
一般页面上至少会有一个视频、一些 GIF 广告、一些直播预览和其他视频的缩略图。你是如何测定页面性能的?以及如何尽量提升页面的性能?
我们使用了一些测评系统。
播放器会将视屏播放的性能和用户播放情况发送给我们;
我们使用了第三方的 RUM 系统;
我们使用了 WebpageTest,这样就可以知道在某个时段发生了什么事情。
我假设播放器是前端的一个最重要也最复杂的功能。在视频前面插入广告、标记视频的关键部分、改变播放速度,等等,你是如何保持播放器的性能、功能和稳定性的?
我们有一个专门负责开发播放器的团队,他们的首要任务是持续地监控播放器的性能。我们用上了所有可用的工具:浏览器性能工具、WebpageTest、性能指标,等等。每次在发布更新之前,我们都会进行一轮严格的 QA 来保证稳定性和质量。
视频团队有多少专职开发人员?有多少前端开发人员?
我只能说,如果从整个产品的规模来看,我们的团队规模算是中等的。
在从事成人网站开发期间,你看到前端领域经历了哪些发展?有哪些新的 Web API 给你带来很大的帮助?
我看到前端技术在很多方面都有进步。
从使用纯 CSS 到使用 LESS 和 Mixin,再到使用灵活的栅格系统和图像标签来适应不同的分辨率和屏幕大小;
jQuery 和 jQueryUI 逐渐淡出了我们的视线,我们回到了更加面向对象的纯 JavaScript 编程。一些框架在某些场景下也起到非常有趣的作用;
我们很喜欢新的 IntersectionObserver API,用它来加载图像非常高效;
我们还使用了画中画 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 应用在沉浸式空间场景中。作为最大的内容分发平台,我们有必要为用户提供让他们能够按照自己的方式来体验网站内容的机会。但我们还在探索,在使用这些新媒体时,内容和平台应该是什么样子。
我们是支持 VR、计算机视觉和虚拟主播的一个主要平台,我们将继续推动新技术的发展。
每个页面上都有不同类型的媒体和内容,对于桌面版或移动版来说,最需要考虑的东西是什么?
我们主要考虑操作系统和浏览器对功能方面的限制。比如,iOS 和 Android 在访问权限和功能方面就非常不一样。
一些 iOS 设备不允许在全屏时使用自定义播放器,它们会强制使用原生的 QuickTime 播放器。而 Android 则给了我们完全的控制权限,可以在全屏时使用我们的播发器。
另一个例子是 HLS 视频流,IE 和 Edge 对 HLS 视频流质量非常挑剔,所以我们需要控制视频的质量,否则在播放时就断断续续或者出现重影。
目前 Pornhub 可以支持的最低浏览器版本是哪个?现在还支持 IE 吗?
我们支持 IE 很长时间了,但最近不支持 IE 11 之前的版本。另外,我们也停止支持 Flash 播发器。我们现在主要支持 Chrome、Firefox 和 Safari。
可以分享一下 Pornhub 的技术栈吗?从服务器端到前端,你们使用了哪些库?
基本上,我们使用了这些东西:
Nginx;
PHP;
MySQL;
Memcached/Redis。
其他技术还包括 Varnish、ElasticSearch、NodeJS、Go 语言、Vertica。
前端方面,我们主要使用了纯 JavaScript。我们在逐步淘汰 jQuery,并开始使用框架,比如 Vue.js。
在外行看来,成人网站的网页上一般充斥着各种视频缩略图、视频、直播和广告。从开发者的角度来看,是什么东西让一个成人网站变得与众不同?
我们努力让每一个品牌都具备一定程度的独特性,不同的内容、界面体验和功能,还使用了很多不同的算法。
在面试 Pornhub 时,你是怎么想的?你有犹豫过吗?如果有,又是怎么消除这种情绪的?
我没有感到有什么不妥,毕竟这个挑战对我来说充满了吸引力。一想到有数百万人会用到我开发的东西,我就感到很兴奋。这个想法很快就得到了验证,当我开发的功能第一次上线时,我感到很自豪,我还叫我的朋友们也去看看!成人网站永远都不会消亡,它为我们提供了稳定的工作来源。
与开发一般的网站相比,开发成人网站可能会有所不同。当你告诉你的朋友、家人和熟人自己在开发成人网站,你会觉得这是一种耻辱吗?你会犹豫告诉他们这些吗?
我为自己开发的东西感到自豪,我身边的人都知道,也很喜欢它们。这也成了我们的茶余饭后的谈资,非常有意思。
你也在其他地方开发过其他网站,在 Pornhub 的工作氛围有什么不同吗?
这里的氛围非常轻松友好,我不觉得跟在其他地方有什么不同。
作为前端开发人员,你需要与哪些团队密切接触?你们平常常用哪些交流方式?
我们需要与后端开发人员、QA 和产品经理打交道。大部分时间我们会跑到各自的工位上讨论问题,其次是使用聊天工具(Microsoft Teams),然后是电子邮件。
最后,作为一名在成人网站工作的开发工程师,你还有什么想要分享的吗?
我非常高兴能够参与开发这个有如此大规模用户的产品。我们身处技术发展的最前沿,这让一切都变得有趣且颇具挑战性。
后记
这个采访很有启发性。我很惊讶他们在开发时居然没有使用图像。Pornhub 走在 Web 技术的最前沿——WebXR、WebRTC 和 Intersection Observer API。我也很高兴看到他们开始逐步淘汰 jQuery,因为现在的 Web API 很给力。
我很想从他那里挖到更过有关技术和性能的细节,我敢肯定他们的源代码里有很多值得一学的东西。换了是你,你会想问哪些问题?
相关推荐
- 运维必备:掌握这3个存储技术(存储运维工程师面试题)
-
高级文件系统管理:LVM、RAID、NFS深度解析前言在现代企业级Linux环境中,文件系统管理是运维工程师必须掌握的核心技能。随着数据量的爆炸式增长和业务连续性要求的提高,传统的单磁盘文件系统已经无...
- 用于构建原生Wayland应用的全新C++工具包
-
Cosmoe是一个现代化的C++UI库,同时也是一个具有深厚历史底蕴项目的全新迭代版本,其根源可以追溯到历史上最优雅的图形用户界面之一。Cosmoe展现了几个令人印象深刻的特性。尽管这是一个刚刚发布...
- CoBi Notfall-System 2024 v1.0 PE系统构建器(PE系统生成器)
-
CoBiNotfall-System2024v1.0(由ComputerBild提供):WinPE(WindowsPE)构建工具,基于"LiveSystemPro"。创...
- 每日一个Linux命令解析——nmap(linux nm)
-
nmap:nmap(NetworkMapper)是一款开源的网络扫描和主机探测工具,用于网络安全审计和主机发现。一、语法nmap[ScanType(s)][Options]{targets...
- 化繁为简,揭秘5款神奇桌面小工具
-
01跨平台提效神器项目eSearch是一个基于Electron框架开发的跨平台桌面应用程序,它不仅仅是一个截图工具,更是一个集OCR、搜索、翻译、贴图、以图搜图和录屏等功能于一身的神器。无论...
- 7款炫酷黑科技工具,让你意想不到的好用
-
都是特别好用的(。-ω-)zzzWord2ArtWord2Art是一个特别炫酷的制作词云工具。它里面包含有上百种模板,有各种炫酷的表情包,人的体型。你只需要输入文字,就可以马上生成炫酷的词云。它还有...
- 电脑系统崩溃也不怕了,一招把驱动都备份出来
-
很多人平时都没有备份驱动的习惯,一旦系统崩溃,重装系统后又要从网上下载新的驱动进行安装。有一些电脑上可能还装了一些比较特殊的驱动,去网上也不太好找,怎么办呢?其实还是有补救的办法的,我们可以进PE把...
- 秒杀一众PE系统,制作强大的U盘启动系统,自制新一代装机神器
-
安装电脑系统的方式有很多,是一个既复杂又简单的工作,有时候几分钟就可以装好,而有些时候却要折腾几个小时。重装系统的时候有很大一部分原因就是因为系统损坏,无法正常进入系统才选择的重装,就拿以前安装原版W...
- GPT vs MBR硬盘分区世纪对决!老司机教你避坑选型绝招
-
一、你的硬盘正在被两种规则支配当你在Windows安装界面犹豫该"删除哪个分区"时,当你在Linux终端输入fdisk命令时,当你的Mac提示"磁盘无法初始化"时,这背...
- WinPE疑难解答(winpe进去后无法访问c盘)
-
在使用WinPE的过程中难免遇到这样那样的问题,我们收集了其中一些典型“症状”及其解决方式,希望能对大家的使用有所帮助。●winPE下找不到硬盘一般来讲,应该是PC打开了AHCI模式,现在很多版本的...
- 新一代多系统启动U盘解决方案Ventoy
-
一款几乎可以在所有情况下启动的U盘启动盘神器Ventoy简介简单来说,Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO/WIM/IMG/VHD...
- U盘制作PE启动盘可见分区格式化成哪种格式比较好?
-
制作U盘PE的时候,各种PE系统都有一个可见分区格式选项,这个可见分区格式成什么格式比较好呢?格式化成什么格式,这个只要了解这3种格式的特点就好选了。1:FAT32FAT32这种FAT格式,因为发展较...
- Win10预览版9879硬盘丢失的Linux解决方案
-
IT之家(www.ithome.com):Win10预览版9879硬盘丢失的Linux解决方案IT之家讯12月3日消息,最近IT之家论坛网友九仙仙总结了Win10预览版9879硬盘问题的解决方法,并...
- 只用U盘就能安装系统,教你怎么把系统放进U盘
-
你可曾想过,只用U盘就能安装系统,而且是随声携带的,走到哪里用上自己的系统,保护了自己的隐私,系统坏了,插上自己U盘系统,拷贝重要资料,也能轻松修复!来~小编教你怎么把系统放进U盘,下面介绍两种开源...
- 全干货!笔记本开箱验机测试全流程 经验分享
-
最近做了几期笔记本评测,今天专门写一遍关于新机拆箱验机测试流程,一些个人这方面的经验,共同分享交流。准备工具:1.一个不错的winpe,手中有现成的可以直接用,没有的话建议使用usbos或者edgel...
- 一周热门
- 最近发表
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- php小说爬取源码 (23)
- 云电脑app源码 (22)
- html画折线图 (24)
- docker好玩的应用 (28)
- linux有没有pe工具 (34)