真的,我现在特讨厌 Safari 浏览器

news/2024/7/20 21:20:12 标签: java, 编程语言, web, 大数据, ios

翻译:前端之巅 - 小盖团队

原文链接:

https://blog.perrysun.com/2021/07/15/for-developers-safari-is-crap-and-outdated/

如果要说开发者最讨厌什么东西,那 IE 浏览器肯定是首当其冲。究其原因,其实也很简单,因为 IE 的设计严重过时,也无法支持现代网站和 Web 应用程序中常见的各类前沿 Web API 与技术。但现在,IE 已经成为过去式,微软拿出了更新、更先进的浏览器替代选项 Edge。

在 IE 解甲归田之后,最烦人浏览器的“桂冠”立马有了后继者——苹果 Safari。

同样的,Safari 在对现代 Web API 及功能的支持能力方面一直落后于其他竞争对手,这直接导致咱们工程师很难在各类主流浏览器(Chrome、Edge、Firefox 与 Safari)上实现统一的产品体验。

这篇文章是我早上看到的,Reddit 上编程模块被顶到了第一名。作者 Perry Sun 是一个创业公司的产品营销经理,他的观点不一定对,但我期望能给你一些启发。

另外,Reddit 上大家的讨论非常热烈,你可以上去看看。

渐进式 Web 应用

现在我们已经探索在浏览器上实现与本机应用高度统一的应用体验了。

这一切的实现依靠的是所谓渐进式 Web 应用(PWA),这是一整套现代浏览器技术的统称,允许开发者在网站上构建起外观、感受与执行效果高度类似于智能手机、平板电脑或台式机上原生应用程序的 Web 应用。

渐进式 Web 应用确实很酷,甚至能够实现以下几种以往专属于本机应用程序的特性:

  • 全屏运行(不显示任何浏览器 UI)

  • 操作系统级别的通知与警报

  • 能够在以离线状态继续运行应用

  • 本地数据存储与检索

  • 在智能手机的主屏幕上添加应用图标

  • 访问各类硬件功能,例如相机、麦克风、USB 接口等

渐进式 Web 应用不需要编译,也不需要提交给应用商店进行审批。如今,星巴克、Twitter 及 Uber 等主流应用都选择了渐进式 Web 应用作为载体。

苹果公司之所以在 Safari 对渐进式 Web 应用的支持方面行动迟缓,当然有着自己的考量。他们一直在严格限制渐进式 Web 应用的功能,比如禁止此类应用发布系统通知或者向主屏幕添加快捷方式图标等。

还不止于此。iOS 唯一支持的 Web 渲染引擎就是苹果自己的 WebKit,任何第三方 iOS 浏览器(包括 Chrome)只能使用 WebKit,不得匹配任何其他引擎(这一点在 Windows、Android 或者 MacOS 上均不受限制)。而 WebKit,正是 iOS 系统上渐进式 Web 应用的管理功能来源。

苹果为什么要对渐进式 Web 应用的 Web API 加以限制?冠冕堂皇的理由当然是用户隐私,但这话我们恐怕只能信一半

很多朋友应该都能想到,一旦功能齐备的渐进式 Web 应用得到全面支持,那么 iOS App Store 将面临巨大竞争。而只有在 App Store 正式上架的应用,苹果才能从一切应用本体购买或应用内购买交易额中抽成 30%。

不久之前,关于苹果不愿支持渐进式 Web 应用的争议还主要集中在 Web 开发者社区。但如今,随着 Epic 与苹果间反垄断诉讼的升温,问题终于被暴露在公众视野当中。

最终,苹果可能会被迫全面拓展渐进式 Web 应用支持,或者对其他第三方 iOS 浏览器敞开大门。但诉讼结果究竟如何,我们只能拭目以待。

用一招“拖”字诀应对 WebRTC

Web 开发者及工程师们,一直在抱怨 Safari 没法像其他浏览器那样良好支持重要的 Web API 与 CSS 功能。

一位 Reddit 用户曾经这么抱怨过,“……苹果根本不鸟任何现代 API。渐进式 Web 应用?流应用?死一边去。但是,苹果大哥,我们真的很需要这一切。”

以 WebRTC 为例,它主要用于支持 Web 上的视频与音频通信,也常用于发送文件及共享屏幕内容。

苹果拖了好几年时间才真正把 WebRTC 支持引入 Safari,远远落后于 Chrome 及 Firefox,这也让 Safari 沦为开发者甚至是行业观察者口中的笑话。

尽管支持终于到来,但众所周知,WebRTC 在 Safari 桌面版上的运行效果远远不及其他浏览器。开发者发现 WebRTC 在 iOS 中的支持更是一团糟,甚至堪称无药可救。

之前,曾经有人批评 Safari 不支持 VP9 视频编码器或 WebP 图像压缩格式。但好消息是,直到 2020 年底,相关支持终于上线。但老毛病还在——与其他主流浏览器相比,上线时间太过滞后。

如今,新的难题再次被摆在苹果面前——到底要不要团结一切力量,支持 AV1 视频编解码器及相关 AVIF 图像格式。但这事同样困难重重,因为苹果自身能从竞争性编解码器 HEVC 中获取专利费,同时也是 HEIC 图像格式的强硬支持者。

Bug 频出,更新不及时

很多开发者都在论坛上抱怨 Safari 在 Web API 与 CSS 功能的实现中存在众多 bug,而苹果的解决速度一直相当迟缓。

“苹果不是世界上最有钱的企业之一吗?拿点钱出来,把问题解决了啊!”Reddit 上一位用户这样吐槽道。

更让人沮丧的是,与 Chrome 或 Firefox 不同,Safari 根本没有固定的更新周期。它的更新频率与底层操作系统保持一致,如此漫长的更新周期对网络浏览器来说简直离谱。

连微软都有种对 Edge 浏览器采用自动更新,苹果,你呢?

也许一切都将改观

请别误会我的意思,Safari 是款非常出色的网络浏览器,不仅性能强大、而且隐私功能相当可靠。

但与此同时,对核心 Web 技术及 API 那糟糕的支持能力则令人困惑又愤愤不平。

iOS 巨大的普及面再加上苹果不断用种种手段阻碍开发者在多种平台上创建统一且优秀的 Web 体验,就更是让人怒气冲天。

这背后的原因我们可以理解,毕竟苹果已经决定把自身命运押在服务收入上,因此 App Store 产生的应用 / 内购抽成将至关重要。

面对公众的舆论压力,苹果公司向来会有所妥协。因此在可预见的未来,相信苹果会参考用户意见、对 Safari 的设计思路做出一些有份量的调整。期待苹果的行动。


http://www.niftyadmin.cn/n/1251137.html

相关文章

新的 Vue 脚手架来了,学的动吗?

1. 前言2021 年 10 月,Vue 团队等主要贡献者举办了一个 Vue Contributor Days 在线会议,蒋豪群[1](知乎胖茶[2],Vue.js 官方团队成员,Vue-CLI 核心开发),在会上公开了create-vue[3],…

你是这样理解 redux 的吗?

前言开始前,你必须知道一些事情:redux 和 react 没有关系,redux 可以用在任何框架中,忘掉 react。connect 不属于 redux,它其实属于 react-redux,请先忘掉它,下一章节,我们会介绍它。…

docker attach卡着解决

当docker容器在 “-d”守护态运行的时候,比如通过supervisord控制两个程序非守护态运行: ssh -D tomcat 那么这个时候,用户就无法直接进入到容器中去,docker attach 容器id 就会一直卡着。 因为此时容器运行的进程是ssh&#xff0…

golang 重要知识:垃圾回收

摘要 golang 的三色标记法虽然没有 java 的内存回收机制成熟,但它细分了回收过程,通过写屏障技术,能和用户程序并发进行,这也一定程度的提高了内存回收速度。 一、为什么要有垃圾回收 我们都知道,当程序启动的时候&…

面试官问Vue性能优化,我该如何回答?

最近面试Vue性能优化问得比较多,也有很多通过面试能拿到高薪。一个前辈闲谈,问他怎么看待工作 2 年的前端开发,月薪就高达 30k、40k 的现状。他说,在众多编程技术中,前端算比较容易入门和提升的,可以通过页…

浪潮的加班标语炸了,这是顶风作案?

近日,网传“浪潮”在办公室挂上了鼓励大家加班的标语。标语 1 :有空就去“加班”吧,去完成那些我们还未完成的事!标语 2 :白天加白班,不瞌睡;晚上加晚班,睡不着。标语 3:…

golang 重要知识:channel 用法和底层原理

前言 channel 是 goroutine 与 goroutine 之间通信的重要桥梁,借助 channel,我们能很轻易的写出一个多协程通信程序。今天,我们就来看看这个 channel 的常用用法以及底层原理。 一、channel 的概念 channel 是一个通道,用于端到…

Chrome 版本即将突破100 ?这个问题不容忽视!

今天跟大家来聊一个由于浏览器版本的变更可能会带来的问题,大家可以提前为自己的网站测试一下看看会不会有问题。2022 年上半年,Chrome 马上就要达到三位数的主要版本号:100 了!记得 Chrome 在很久以前第一次达到版本号 10 时&…