移动端点击为何总是慢半拍:从300ms延迟到触摸事件处理的完整技术解析
2007年,第一代iPhone发布时,一个看似微小的设计决策,让移动Web开发者在接下来的十年里饱受困扰:当用户在移动设备上点击一个按钮时,浏览器会故意等待约300毫秒才触发点击事件。这段时间足够用户再点击一次——如果真的发生了第二次点击,浏览器就会执行双击缩放操作,放大页面内容。 ...
2007年,第一代iPhone发布时,一个看似微小的设计决策,让移动Web开发者在接下来的十年里饱受困扰:当用户在移动设备上点击一个按钮时,浏览器会故意等待约300毫秒才触发点击事件。这段时间足够用户再点击一次——如果真的发生了第二次点击,浏览器就会执行双击缩放操作,放大页面内容。 ...
2019年,一个电商平台发现他们的页面在Chrome下加载需要8秒,而换用Firefox只需要4秒——同样网络环境、同样服务器、同样代码。性能团队排查了DNS、TLS握手、服务器响应时间,所有指标都正常。最终发现问题出在一个被大多数人忽略的地方:HTTP/2流优先级。浏览器向服务器发送了优先级信号,但服务器没有正确处理。这不是个案。Andy Davies的测试显示,全球主流CDN中只有不到30%正确实现了HTTP/2优先级。Google Cloud CDN、Amazon CloudFront、Azure CDN——这些巨头的服务都曾在这个问题上栽过跟头。 ...
JavaScript从诞生之初就背负着单线程的命运。这个设计决策在1995年看起来理所当然——浏览器只需要处理简单的表单验证和DOM操作。但三十年后,当Web应用需要在浏览器中运行视频编解码、物理模拟、甚至机器学习模型时,单线程的限制就成了一个无法回避的架构瓶颈。 ...
2012年12月,第29届混沌通信大会(29C3)在汉堡举行。Harry Halpin在演讲中抛出一个颇具挑衅意味的标题——“Re-igniting the Crypto Wars on the Web”(在Web上重新点燃密码学战争)。这不是耸人听闻。当时的背景是:斯诺登事件尚未爆发,但全球范围内的网络监控已成公开的秘密。Web应用亟需端到端加密能力,而JavaScript却在这方面显得力不从心。 ...
一个URL能被解析出多少种不同的结果?答案可能会让你感到意外。 2022年,安全研究人员Joshua Reynolds等人发表了一篇题为《Equivocal URLs: Understanding the Fragmented Space of URL Parser Implementations》的学术论文。他们对15个主流URL解析器进行了系统测试,发现了一个令人震惊的事实:针对同一个URL,不同解析器给出的主机名竟然可以完全不同。更严重的是,某些情况下这种差异会被攻击者利用,绕过Google Safe Browsing和VirusTotal等安全检测系统。 ...
现代Web应用离不开用户认证。无论是登录社交账号、调用API接口,还是使用移动应用,背后都有认证机制在工作。在众多认证方案中,JWT(JSON Web Token)已经成为最流行的选择之一。它简洁、自包含、易于扩展,被广泛应用于单点登录、API认证、微服务架构等场景。 ...
当你尝试让一个元素在页面中水平垂直居中,是否曾经写过这样的代码:设置绝对定位,然后手动计算top: 50%和left: 50%,最后还要加上负的margin来修正偏移?当你在做导航栏时,是否为如何让几个链接均匀分布而头疼?这些问题在CSS Flexbox出现之前,确实需要各种"黑魔法"才能解决。 ...