我想知道哪种方法会更有效率。我有大约三十万个DIV标签,看起来像这样:
<div class="s" style="top:200px;left:100px;margin:0 2px 0 2px;">
here_comes_200chars_of_text</div>
每个标签都有不同的位置和边距,这就是为什么我不能把风格放在css中。
我想将整个html代码放入数据库中,并在用户需要时从那里加载它,然后我的问题出现了。是否更好地存储如上所示的html,或者使用一些php代码缩短它们,如下所示:
<d c="s" s="t:200;l:100;m:0 2 0 2;">here_comes_200chars_of_text</d>
,将其上传到数据库并在读取时重新创建正常的外观?
每个DIV可以节省20个字符。这使得大约600万个字符得以保存。这就是我要问的原因。
我希望你明白我的意思。 最好的问候。
编辑:
网络应用的典型用法:
用户正在创建大量的html对象,每个对象代表地图上的某种元素。整体上有大约200个用户,每个用户都有自己的对象地图,并且有一次,超过20-30个用户不会使用网络应用程序。它们将数据存储在地图的每个元素中,在DIV标记之间。它们可以动态移动,更改单独DIV的边距并更改DIV中的内容。编辑地图后,用户将能够将他们的工作保存在数据库中。这就是为什么我想知道如何保存由用户创建和修改的DIV的原因。
我希望它能解决我的问题:)
答案 0 :(得分:1)
我建议创建一个这样的表,我认为是更有效的方式(类似于Vincent Decaux评论):
CREATE TABLE `test`.`divs` (
`text` TEXT NOT NULL,
`top` SMALLINT NOT NULL,
`left` SMALLINT NOT NULL,
`margin-top` SMALLINT NOT NULL,
`margin-bottom` SMALLINT NOT NULL,
`margin-left` SMALLINT NOT NULL,
`margin-right` SMALLINT NOT NULL
);
这个aproach使用4个字节x 6个字段= 24个字节用于样式,比你的方法少16个字节,假设你将文本存储为ASCII。如果你使用另一个字符集,保存会更大。
答案 1 :(得分:0)
如果保存的磁盘空间是高优先级,则应压缩文本并将其另存为 BLOB 。它在连接数据库时节省带宽。如果这是一个很好的方法,在很大程度上取决于场景,也许您可以更详细地解释用法?例如。有多少用户,修改内容的频率等等。
修改强> 因此,如果只有300,000条记录,并且每条记录可存储在256字节中,则需要大约75米的内存和每个对象元数据。也许根本不需要数据库。你如何识别要修改的DIV?关于对象使用的信息仍然不多。如果您要修改数据,请使用 Javi的解决方案来存储和发送打包到客户端的数据,其中javascript将解压缩并创建HTML对象。