关于各类用户在本站的体验说明

我发现最近一些国内的朋友开始频繁的提醒我说“xxxx不work了”,“这个地方的网页行为诡异”等等。首先非常感谢各位的关心,也为各位主动当QA帮我的网站找bug的行为表示感动(就是那种资本家看到了工人努力干活的感动,2333)。

但是,非常遗憾的,其中大多数bug,一方面缺乏细节,二方面有些其实之前已经预期到了。对于缺乏细节的,就只能提前感谢各位老铁帮忙调查了。对于已经预期出现的问题,我还是想先澄清一下我目前(2021年4月2日)自己对本站用户的一个预设。

我的希望是:在保障免费QA报的bug数的同时,能进一步帮助QA报告有用的信息,以进一步增加白嫖劳动力的产出。

我的方式是:澄清我的假设,然后看看能不能让不符合假设的QA在两个场景横跳一下,进一步验证目前的运行状况。

最后再次感谢各位老铁提供的支持!


综述

本站在内容上,主要分为5大块内容:技术、Codeforces、哲学、法律以及我自己的财政系统。

本站在用户上,采取Ghost默认的配置,将用户分为了3类:一般用户、订阅用户和付费用户。

本站在运维上,和其他所有.pub提供的服务一样,都是寄生于我自己应用的那一套基础设施之上的。


用户来源

我假设我的用户按来源分可以分为:私域用户和Google/Bing用户。

首先对于私域用户,无疑,如诸位所见,我经常会发最新的文章到朋友圈。对于自私域的用户,我的预设是:

  1. 来大多是开发人员或开发相关人员
  2. 大多数身处国内

然后呢,我其实也会以Google/Bing用户为目标,并且努力通过本站将私域用户的特征转化成和Google/Bing用户特征一致。

这里必须特别强调的是,整体来说,我是拒绝baidu用户的。

因此,在本站的第三方工具选择上,基本上是直接忽略国内用户体验的。同时,我的预设是,本站的用户应当是随时随地都能访问Bing等百度以外的搜索服务的。

虽然,我从BI工具上看到的效果是,的确国内访问会有一些迷惑行为。比如:公式加载出来是乱码,以及mobile上导航栏点不动等等。我的确也能从我家里的机器重现部分情况,但目前的感觉是:八成是网络问题。

对此,我只能尽可能多的增加网络相关文章,以期更快的实现用户转化。


内容的目标用户

Codeforces和技术

Codeforces是一个位于俄罗斯的算法竞赛网站。目前国内似乎不能稳定访问。而这部分的主要目标用户是本身就知道Codeforces的用户。因此,因此我假设这部分用户先天就能访问Codeforces,并且不会遇到任何网络问题。

同时,以我个人经验,Codeforces的内容更多的是面向那种在CF上刷了,然后刷不动,看了题解有思路但是一直过不了,万般无奈搜一下看看别人是怎么做的。以及面向那种Div3的小白。

对于技术部分。目前其实更偏重于私域用户。虽然我的假设依然是,这部分私域用户都是开发人员,不存在网络问题。不过我也确实注意到来自国内的流量中,大约有50%+是iphone流量。我之前也用过iphone,我大概理解iphone上确实有网络的困难,但我暂时只能表示请关注后续网络相关文章。

总之,对于Codeforces和技术,我无力为国内做额外的优化。目前我只能说,依靠我的那一套伪·CDN来保障发到我这里的请求能正常访问。但第三方依赖确实只能靠用户的网络给力了。

财政系统、哲学和法律

财政系统、哲学和法律这三块内容是本站的辅助内容。这部分内容没有明确的目标用户。

因此如果这部分用户身处国内的话,我感到抱歉。如果需要,可以使用我.pub下的另外一项服务——网络救援服务。


用户划分

一般用户

一般用户就能看到本站至少90%的内容。毕竟这个网站时挂在.pub域名下的,因此这个域名下的所有东西,出于个人原因,本身的目标都是共享和公开的。

订阅用户

订阅用户的出现显然是为了分享一些更加深入的一些内容。尤其是一些不宜完全公开的内容。

以《苏0724刑初166号案的一点个人推测》为例。这篇内容是对《苏0724刑初166号中看刑事审判审限》的补充。而因为涉及一起尚未审结的案件,所以不宜完全公开。且由于个人风格,一般我都会往最黑暗的层面去推测,所以要求订阅也是为了避免一些麻烦。

付费用户

付费用户才能看到的内容其实和订阅用户没有本质区别。只是付费用户能看到的内容应当比订阅用户的内容更加深入,也可能涉及到一些利益冲突(包括但不限于对个人或组织的利益冲突)。不过目前还没有到这个地步,虽然要是愿意打赏一下,搞个年费也是可以的。


运维

最后想说一下本站的运维。

.pub域名下服务本身也是比较分散。其根本原因是.pub下的服务是没有预算的。其所有基础设施和运维工作,全部都是跟着我自己的那一套东西走的。

以nexus服务为例。这两个服务虽然理论上都是直接面对用户production环境,但是nexus却是在我家里的测试集群里运行的。原因是,线上生产集群资源不够,而nexus是吃硬盘和内存的大户,因此只有测试集群有空余资源。(这也是为啥nexus的服务并不是那么稳定的原因)

本站,由于Ghost本身非常小巧,而且不用为他单独起数据库。因此Ghost得以存活于线上集群。(而且Ghost自身只支持单点,焊死了扩展性,如果流量大了只能扛缓存,不会产生额外的集群成本。不过也是因此,Ghost会因为线上集群的定期patch而定期挂掉)

而得益于我那一套伪·CDN。我在每个CDN节点上都做了内容的缓存。但我的CDN如上面提到的,只能保障我自己站的内容稳定访问,并提供一定的缓存功能。对于第三方依赖的访问问题,与其我花effrot把这些资源改成自己host的,不如花effort让用户自己能够随时访问到这些资源。

不过的确吸取了一个宝贵的教训:定期patch应该安排在凌晨,而不是早上。

这里面至少要下载5个第三方js,而这还只是我定制的header部分而已……

性能

虽然我从BI工具上看到,超过85%的用户都是mobile用户。而Ghost的mobile性能确实远低于desktop的性能。比如下图的测速结果:

桌面端的网页测速
移动端的网页测速

但这个我是真没办法,唯一能做的就是定期patch。


最后总结一下其实就是,对于受限于国内网络的用户的体验我基本是放弃的状态。并且计划着怎么帮这部分用户不再受限于网络。