Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

建议在 Forum_post 表中添加一个 ReplyToPid 字段,减少引用内容对数据库的空间占用。

[复制链接]
IsaacZ 发表于 2011-7-18 12:41:15 | 显示全部楼层 |阅读模式
本帖最后由 IsaacZ 于 2011-7-18 11:17 编辑

前阵子发了一个建议帖:【哪个更有效率?】楼层回复时非要把“自动引用”的内容写入帖子正文中吗? 不过还没有结论,就自动关闭了。我怀疑一些关键性的建议可能还没人注意到,所以这里重新提一下:

点楼层下方的“回复”的主要目的是让楼层作者收到通知。为了保持话题的连续性,很多朋友会使用楼层下方的“回复”按钮来直接和楼层作者进行交流。这种交流有时只是片言只字,只占据帖子数据量的几分之一甚至十几分之一,剩余的数据量都被“自动引用”的内容所占据,这对数据库空间是巨大的浪费。如图:



源代码模式:



从上图中,大家可以看到楼层回复时真正起到交流作用的文字所占的比例可能很小,其他大部分内容都是完全可以通过代码实现的。

我在想,既然“自动引用”时要传递的主要就是相应帖子的PID。为什么不在楼层回复的环节中用一个单独的字段(比如ReplyToPid)来存放这个 PID,再在提交后的显示页面中利用数据库查询 自动调用此 pid 的帖子正文以达到引用的目的?这样不是更节省数据库空间吗?


肉松面包 说:


一直都是这样的机制
减少查询也是一部分原因

在被引用的内容中点击返回钮,是可以查看原始楼层的

然后就再没有回复了,难道“一直这样”,今后就一定这样吗?

返回按钮 无非就是一个类似如下的链接:
https://discuz.dismall.com/forum.php?mod=redirect&goto=findpost&pid=19860738&ptid=2235267
其中最关键的参数是:pid=19860738
甚至 ptid 都不需要。

所有的引用内容(包括那个返回按钮 ),都是可以套用模板来展现的。只需要在点击楼层下面的“回复”时获取一个原始楼层的PID,传递到新帖子中,就可以完整实现现在达到的效果。

我再详述一下思路:

1、在 pre_forum_post 表中添加一个新字段,比如是 ReplytoPid 字段
2、当点击某个楼层下方的“回复”时,获取此楼层的 pid ,并传递到帖子编辑页面。
3、提交帖子时,将刚才获取的原始楼层 pid 写入新帖子的 ReplytoPid 字段
4、显示新帖子时,查询验证每个楼层的  ReplytoPid 字段是否为空。为空则直接显示帖子正文; 不为空则前往 ReplytoPid 字段获得引用对象的 pid ,截取此 pid 对应帖子的部分引用内容,添加到当前帖子正文之前一起显示给用户。

希望官方慎重考虑此建议!
回复

使用道具 举报

yirihan 发表于 2011-7-18 13:00:05 | 显示全部楼层
顶11111111111111
回复

使用道具 举报

肉松面包 发表于 2011-7-18 17:01:31 | 显示全部楼层
对于表中增加字段的功能,要考虑一下成本和效果的均衡。
此建议已收集了,待研发同学讨论后来看一下~
回复

使用道具 举报

肉松面包 发表于 2011-7-18 17:01:32 | 显示全部楼层
对于表中增加字段的功能,要考虑一下成本和效果的均衡。
此建议已收集了,待研发同学讨论后来看一下~
回复

使用道具 举报

413188828 发表于 2011-8-6 01:37:12 | 显示全部楼层
没看明白
回复

使用道具 举报

 楼主| IsaacZ 发表于 2011-8-6 20:17:49 | 显示全部楼层
本帖最后由 IsaacZ 于 2011-8-6 18:53 编辑
413188828 发表于 2011-8-6 00:07
没看明白

比如我点你的帖子下面的“回复”,然后发表后,我这个帖子(地板)里面最上头就会有一个灰框,里面有两个大引号,套着的是你的发言。为了让你明白,我再把上面的重复一下,就这个:
413188828 发表于 2011-8-6 00:07
没看明白
我想说的是,这些字是定义了字体颜色格式的,那个小箭头还带图片地址,还带链接,在数据库里面实际写入的是如下内容,非常占空间:
  1. [quote][size=2][color=#999999]413188828 发表于 2011-8-6 00:07[/color] [url=https://discuz.dismall.com/forum.php?mod=redirect&goto=findpost&pid=20425529&ptid=2273765][img]https://discuz.dismall.com/static/image/common/back.gif[/img][/url][/size]
  2. 没看明白[/quote]
复制代码
远远超出想像,对不对?

我的建议就是通过在数据库里面增加一个字段的方法,用“20425529”这一个数字来替代上面这一大堆字,你觉得好不好呢?



回复

使用道具 举报

LJJYAZI 发表于 2011-8-7 10:05:56 | 显示全部楼层
很复杂哈。。。。。
回复

使用道具 举报

 楼主| IsaacZ 发表于 2011-8-11 00:11:17 | 显示全部楼层
实现起来一点儿也不复杂,就是传递个参数而已。
回复

使用道具 举报

爱莲塘 发表于 2011-8-11 11:37:04 | 显示全部楼层
是啊,在数据库确实没必要重复内容的
回复

使用道具 举报

 楼主| IsaacZ 发表于 2011-8-11 21:51:46 | 显示全部楼层
爱莲塘 发表于 2011-8-11 10:07
是啊,在数据库确实没必要重复内容的

{:soso__5090552617401042891_1:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-8-26 06:02 , Processed in 0.128954 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表