距离上个版本发布过去了两个半月,最近比较忙,所以更新的内容不多。
这是一个小版本更新,各位选择性升级。
官网地址/演示地址: http://www.94cb.com/ (使用手机访问会自动跳转至手机版,或者手机直接输入 m.94cb.com )
GitHub地址: https://github.com/lincanbin/Carbon-Forum
3.3.6 下载地址: https://github.com/lincanbin/Carbon-Forum/archive/3.3.6.zip
考虑PHP的限制与浏览器兼容性,最终选择了Long poll来实现实时的消息推送。用户可以自行调整长连接时长,建议调成120s(PHP最大超时时间也要相应修改)。
这个性能也相当不错,在开启Memcached的情况下,一台最低配的DO VPS大概可以承受50000人在线同时接受推送 ,换好一点的独立服务器可以更多。当然,50000人在线是足够绝大多数论坛使用的了。
同时使用了HTML5的Notification API,即使网页在后台被最小化,也可以继续推送通知,不受影响,让论坛变得像即时通讯工具一样高效。

即使服务器在美国,也实现了每次从客户点击到浏览器完全渲染完毕,耗时在400ms以内(网络线路正常的情况下),同时除了jQuery与我自己的global.js,其他js均以异步方式载入,非阻塞。
并且搜索引擎友好性并没有降低,配合我之前做的Sitemap等SEO优化,保证了高收录。

这是一个早就设计好的表了,这个版本把坑填上了,查看每天的新帖、总帖、新主题、总主题、新用户、总用户数量的变化。
http://www.94cb.com/statistics (官网有快10年的数据,全部展开的话,浏览器有近20000个点要渲染,可能会比较慢)


|  |      1lincanbin OP 最近比较忙,这两个月我干的也没什么别的,大概三件事。一个,实时消息推送。第二个,全站异步刷新。第三个,历史数据统计。如果说还有一点成绩就是悬浮展示引用并回复的帖子的内容。还有数十处细节修改也是很大的。但是这些都是次要的,我主要的就是三件事情。很惭愧,就做了一点微小的工作,谢谢大家。 | 
|  |      2lincanbin OP 悬浮展示回复的帖子的内容这块是 oott123 做的。 然后繁体中文语言包是 孙志贵 和 LNDDYL 做的。 特此鸣谢。 https://github.com/lincanbin/Carbon-Forum/graphs/contributors | 
|  |      3zqjilove      2015-07-21 11:08:16 +08:00 @lincanbin , 来一个discuz转数据到Carbon Forum的功能。估计一些老站点也会考虑试用。至少我有想尝试的意愿。 | 
|      4q000q000      2015-07-21 11:12:25 +08:00 手机版标题字体好大... | 
|  |      6lincanbin OP @zqjilove Discuz里的数据能跟我那个程序里对得上的不多,DZ是板块分类,我的是像知乎那样的标签分类。 这点比较麻烦,用户系统倒还是差不多,密码都是MD5(MD5(Password)+Salt),这点倒是可移植,但是其他的就麻烦了。 | 
|  |      7ahu      2015-07-21 11:24:47 +08:00 @lincanbin 没考虑做成相应式页面吗?我觉得不需要再专门搞一个手机版了,一套页面PC访问时显示PC版式,手机访问时显示手机版式,跟V站一样 | 
|  |      8lincanbin OP @ahu V站不是响应式,他也是根据UA切换两套不同的模板,只是两套刚好长得非常像。 另外响应式我觉得就是偷懒、不负责任的行为,个人非常讨厌响应式。 鼠标驱动和触摸驱动的,能硬用同一套Layout? 这搞出来就跟知乎或者Bootstrap一个样了,用起来反正我是讨厌得不行。 | 
|  |      9zangbob      2015-07-21 11:42:31 +08:00 @lincanbin 目前这种分开的做法比较好。 前阵儿新弄了一个站,用的响应式,各种浏览器、大小兼容要改,CSS弄到要吐。虽然google建议响应式,从长远考虑,还是PC站和mobile分开好,这点非常赞同 | 
|  |      10abmin521      2015-07-21 11:42:57 +08:00 via Android 好牛的样子, | 
|  |      11lincanbin OP @zangbob 还有就是大部分响应式,在浏览器开启缩放的时候会跪。 例如1600*900的屏幕,平时开150%很合理吧,大部分响应式设计还没考虑到这个点,都跪了,特别是图片多了那种幻灯片式的。 响应式要考虑的太多,容易做烂,水平不够就不要玩响应式。 360、腾讯、百度都有一些前端页是做响应式做到玩脱的,页面直接变形了。 | 
|  |      12zangbob      2015-07-21 11:54:07 +08:00 | 
|  |      14DearTanker      2015-07-21 12:00:46 +08:00  1 | 
|  |      15DearTanker      2015-07-21 12:01:14 +08:00 @zangbob 我刚才也是这个问题,再登录一次就可以了。。 | 
|  |      16lincanbin OP 顺便黑一下微软,虽然Win 10会有通知中心,但是Edge依旧不支持HTML5规范中的Notification API,所以Microsoft Edge浏览器中没办法后台推送消息通知,只能做到知乎那个程度的前台实时消息推送。 在Chrome、FireFox、Opera之类的浏览器就没有这个问题。 | 
|  |      17DearTanker      2015-07-21 12:02:35 +08:00   貌似是卡了还是连击了,出现了2个编辑框 | 
|  |      18lincanbin OP @DearTanker 编辑器是支持右键粘贴图片的,我论坛里的截图都是用QQ截图后粘贴的。 | 
|  |      19lincanbin OP @DearTanker 估计是卡了吧,是每次都会还是偶然现象? 如果是每次都会的话,报下浏览器的版本号。 改成全异步后有好多屁股要擦,可能是我没擦干净? simditor逼格是挺高的,可是要IE 10+才能跑,我觉得用在开源项目中不太现实,最起码市场占有率还有20%的IE8得支持。 虽然说不来不太好听,可是我的论坛还是保持了IE6基本兼容的。 | 
|  |      20journey      2015-07-21 12:06:29 +08:00 强行膜蛤..... | 
|  |      22lincanbin OP | 
|  |      24est      2015-07-21 13:23:45 +08:00 还是大php创造力旺盛啊。。。 | 
|  |      25lincanbin OP @est PHP用long poll实现长连接也是一个妥协的做法。 如果不考虑浏览器兼容性和PHP虚拟主机的常规限制的话,我是打算用node.js和websocket来实现实时消息推送的。 没准这样做就可以达到单VPS支持100000人同时在线接收推送的水平。 | 
|      26k21654987      2015-07-21 15:24:24 +08:00 厉害 | 
|  |      27banri      2015-07-21 15:32:05 +08:00 好顶赞,关于响应式设计的理解上,我觉得这楼里讨论的有点片面? 目前成熟、稳定的方案也确实是通过UA区分桌面端和手机端,但是在桌面端和手机端各自的情况下,还是需要响应式设计的。响应式设计的精髓在于媒体查询,可根据媒体类型、分辨率、DPI来确保各种情况下的显示都能够达到最好的浏览效果。 比如对于高分屏采用DPI查询增加字号和图片分辨率等,这都是属于响应式设计的一种啦 -w- | 
|  |      28lincanbin OP @banri 你说得也有道理,目前的移动端虽然是另一套独立的模板,但是也是响应式布局。 PC端暂时没有这个打算,要考虑的东西太多了,做响应式我也没把握做好。 | 
|  |      29DearTanker      2015-07-21 15:50:08 +08:00 | 
|  |      30lincanbin OP @DearTanker 我也经常这样,在自己主题刷着看到了新回复,却没看到通知。 等我回复完了,刷着刷着,突然就来了消息通知,点开一看,是十几分钟前的了。 | 
|  |      32lincanbin OP @jayzhong 问题是这个是个开源项目,肯定要兼顾兼容性,如果用swool,那么那种一年租几十块钱虚拟主机的用户到哪里编译extension用? 如果不考虑这部分虚拟主机用户,把目标全放在有VPS/独服的用户,最佳方案也不是用swool。 而是论坛部分由Carbon Forum完成,推送部分使用node.js例如io.js,然后用胶水粘起来。 | 
|  |      33pein      2015-07-22 08:53:23 +08:00 厉害,这功能都有了。之前也写过一个长连接的东东,你这个貌似是服务器端循环的,压力比客户端轮询会大一些吧,sleep时间改大点压力会小蛮多,反正也不是聊天室那种即时通讯,呵呵。有没有想过用websocket来做呢? | 
|  |      34yueyoum      2015-07-22 10:26:42 +08:00 很不错 , 赞! | 
|  |      35cobola      2015-07-22 11:06:15 +08:00 写的不错 楼主考虑用meteor 来写一遍么? https://github.com/cobola/meteorbb | 
|  |      36mfanming      2015-09-11 18:34:58 +08:00 via Android 准备用林先生这套 |