小剧客栈为什么要使用双视图

时间:2014-10-28 作者:剧中人

经过一番修正,现在的视图切换逻辑是这样纸的:面向IE等低级浏览器访客,小剧会启用屌丝版,而对于高级浏览器的用户,则直接进入尝鲜版,体验更高逼格的效果。很智能有木有!

出于对访客的尊重以及对搜索引擎的敬畏,小剧最近重新构建了博客的视图渲染机制。

本次改进采用了渐进增强的思路,所有用户(浏览器)、搜索引擎都将都看到基于bootstrap的页面。对于高级浏览器的用户,我会告诉他可以尝试使用尝鲜版,体验更高逼格的效果。

两个版本称之为:屌丝版、尝鲜版(品尝小鲜肉)。

这样既不会伤害守旧的二货们,又可以兼顾搜索引擎,最重要的是能在各个版本下,发挥到极致而无需存在过多的顾虑。


上面是结果下面是原因


熟悉剧中人的小伙伴们应该都知道,小剧客栈是不支持IE8及以下浏览器的。在高级浏览器里,整个网站一派欣欣向荣的样纸,低级浏览器下就是这么一个黑屏。

不支持您的浏览器

很多小伙伴问过我实现的思路是怎么样的。

其原理很简单。禁用JS后就可以发现,每个页面还是一个正常的页面。JS为可用状态时,脚本会有一部分逻辑判断。低级浏览器一律转向不支持对应浏览器的页面,高级浏览器会移除原页面的内容,再使用高大上的单页面进行前端路由管控,承担渲染页面的重任。

这里面有一个小插曲。判断高级浏览器这一步,最初是使用HTML5的特性来检测的,检测不通过则立即通过location.href转向到不支持的页面。看似很无懈可击的方法,却没想到google竟然进化到在爬页面的时候还可以解析JS。最终,在google的眼里,我的博客所有页面都转向了那个黑呼呼的界面。

说到这儿,之前的设计有三个明显需要优化的点就已经出来了。

一是低级浏览器。因为跳转逻辑在JS里,在跳转到不支持对应浏览器的页面之前,必然会先加载当前页面,加载出一部分后才会执行跳转。这种体验会给访客一种错觉:明明可以给我看到页面,为什么还不给我看?

二是高级浏览器。因为要兼顾搜索引擎,页面里会有对应内容,解析时又是前端渲染,会把原有内容清除,再重新请求一遍,这样第一个页面至少多了一遍数据输出的过程。从前后端统筹来看,性能不是最优。

三是搜索引擎。前面的那个插曲,小剧的解决方式是直接检测浏览器是否为IE678,这里同样存在风险,因为保不准某款搜索引擎的UA就是IE系列的。还有就是,既然google会解析JS,那么我移除内容元素这一步应该也是有风险的!

最终,就有了开篇提到的,小剧最近做的事情。


原因写完了,再翻上去看结果吧