混合云运维视角:媒体网站无障碍设计的9大技术盲区
|
文章配图,仅供参考 去年四月份那波无障碍改造,我原以为就是改改字体大小、加几个alt标签,结果前端把整个CDN的缓存策略都改了——你说他们是不是闲的?最离谱的是那个「高对比度模式」,直接在CSS里写死颜色值,连动态主题的接口都不调了,导致我们灰度发布的时候,监控大盘上那条绿色的线一直在抖,QPS倒是没降,但错误日志里全是「主题配置不匹配」的堆栈,我蹲在工位上翻了半小时日志,结果发现是前端埋的测试字段没删干净。那天下午接口超时告警炸了一片,我原以为是缓存击穿,结果查下来是前端在无障碍页面里嵌了第三方语音合成SDK,那玩意儿没做限流,直接把我们的出口带宽打满了。更绝的是,他们为了「兼容旧版浏览器」,把SDK的版本降到了三年前的,结果那版本的API连幂等都做不好,同一个语音请求发了五次,后端数据库直接脏数据满天飞——我回滚的时候手都在抖,生怕把生产环境的表结构给改了。 说到表结构,他们改无障碍页面的时候,连字段类型都没对齐。比如「屏幕阅读器支持」这个开关,前端用Boolean传,后端用String存,结果灰度期间一半用户的配置没落库。我查日志的时候,发现有个用户的请求里,这个字段的值是「true/false/on/off」的混合体——我怀疑前端是不是直接把表单的value属性原样传过来了,连类型转换都没做。更搞笑的是,他们为了「提升用户体验」,把所有无障碍相关的接口都加了重试逻辑,结果导致某个定时任务的幂等键被重复使用,数据库里多了三千多条重复记录,我清理的时候差点把线上表给truncate了。 咖啡机坏的那天,我正跟前端吵「语义化HTML」的事。他们说用div+role就能替代button,我说那访问键(Access Key)怎么办?他们说「现在谁还用键盘操作网站啊」——我差点把咖啡杯摔了。后来产品经理过来打圆场,说「先按你们的方案上,出了问题再回滚」,结果第二天就收到投诉,说无障碍页面的快捷键和浏览器的默认快捷键冲突了,用户按F5刷新,结果触发了「跳过导航」的功能,直接跳到了页脚。 我原以为无障碍改造最多影响前端,结果后端也被拖下水了。比如那个「文字大小缩放」功能,前端为了「保持布局稳定」,把字体大小的调整范围锁在了12px到18px之间,但产品说「要符合WCAG标准,至少支持200%的缩放」。最后前端妥协了,把缩放逻辑扔给了后端——你说他们是不是有病?后端怎么控制CSS?结果他们用Cookie传缩放比例,后端根据Cookie动态生成内联样式,导致每个页面的HTML都多了两KB,CDN的命中率直接掉了5个百分点。我查监控的时候,发现某个无障碍页面的响应时间比普通页面多了200ms,全是因为这堆动态样式。 工位隔断上贴的便签卷了边,我顺手撕下来,发现是去年写的「无障碍接口要加缓存」。现在看来,这便签比前端的代码还有用——他们根本没给无障碍接口加任何缓存策略,导致每次刷新页面都要重新拉取配置,后端数据库的压力直接翻了一倍。我提了三次工单,他们都说「无障碍用户量少,不影响整体性能」——可监控不会说谎啊,无障碍页面的PV虽然只占3%,但接口耗时比普通页面高了40%,这他妈叫不影响? 最让我无语的是那个「语音导航」功能。前端为了「减少依赖」,自己用Web Speech API实现了语音合成,结果在Safari上根本不支持,用户只能听到「嘟嘟嘟」的错误音。他们说「用户可以换Chrome」,我说「无障碍规范里明确要求兼容主流浏览器」,他们说「那规范是给政府网站用的,我们媒体网站不用这么严格」——我差点把键盘砸了。后来他们妥协了,改用第三方的语音服务,但没做降级处理,结果网络不好的时候,整个页面卡在「加载语音中」的状态,用户连文字内容都看不到。 跑题说个事,上周运维发版,把无障碍页面的静态资源路径改了,结果前端没更新CDN的缓存规则,导致一半用户看到的是404页面。我查日志的时候,发现有个用户的请求里,静态资源的URL还是旧版的,但HTML里引用的已经是新路径了——我怀疑前端是不是直接复制了生产环境的代码,连路径都没改就提交了。后来产品经理说「无障碍用户量少,先不修复了」,我说「那下次别让我背KPI」,他说「这不是KPI的问题,是优先级」——我他妈最烦听这种套话了。 回到正题,我觉得那篇「9大技术盲区」里说的「优胜劣汰」特别对。无障碍改造不是改几个CSS就能搞定的,它涉及接口、缓存、数据库、浏览器兼容性,甚至运维发版流程。前端总觉得「这是前端的事」,后端觉得「这跟我们没关系」,结果最后出问题的时候,大家都在甩锅。我上次在例会上说「无障碍接口要加限流」,前端说「那会影响用户体验」,我说「不加限流,数据库会被打爆,到时候所有用户都用不了」——他们不说话了,但我知道他们心里在想「这锅该谁背」。 现在我们的无障碍页面还在灰度,但我已经能预见到未来的麻烦了。比如那个「屏幕阅读器检测」功能,前端用JavaScript判断用户是否安装了读屏软件,但没考虑用户可能禁用了JS;比如「键盘导航」功能,他们没测试Tab键的顺序,导致用户按Tab的时候,焦点跳到了广告位;比如「颜色对比度」检查,他们用在线工具测的,但没考虑动态主题的影响——这些问题,那篇「9大盲区」里全提到了,但前端一个都没改。 我承认,有些问题可能确实「用户量少,不影响整体」,但无障碍不是给「少数人」做的,它是网站的基本功。就像我们不会因为「移动端用户量少」就不做响应式设计一样,无障碍也该是标配。可惜前端不这么想,他们觉得「这是政治任务」,做完了就行,至于好不好用,那是用户的事——可用户要是用不了,我们的KPI谁来完成? 下次再遇到这种改造,我一定要提前把监控埋好,尤其是接口耗时、错误率、缓存命中率这些指标。还有,工单系统里得加个「无障碍专项」标签,不然出了问题,大家都装看不见。至于那篇「9大盲区」,我已经打印出来贴在工位上了——虽然前端可能不会看,但至少能提醒我自己,别被他们带沟里去。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


无障碍设计:从第一行代码起的科技尊重
无障碍设计失灵?动态跨界整合破局
MySQL事务控制无障碍设计指南

