2009-04-22 62 views
1

嗨最快的方式我有一个服务器上运行一个小评吼吼箱型CGI进程,目前当有人评论,我只是格式化成HTML即存储评论数据蟒蛇

<p class="title">$title</p> <p class="comment">$comment</p>

和商店评论在一个平面文件中。 在LOC中用xml或json重新实现存储,在我自己的简单规范中还是坚持使用简单的html路由,会更快更低吗?

我不想为此使用关系数据库。

+0

您使用不同形式的存储而不是平面文件的动机是什么? – Brian 2009-04-22 12:59:43

+0

平面文件意味着我必须进入服务器,awk out注释我不想要垃圾邮件等xml或json有点更灵活。我猜可以把它变成rss。我只是想知道所涉及的开销是否使它成为时间浪费。 – dunkyp 2009-04-22 13:04:42

回答

3

如果一个平面文件足够快,然后去那,因为它非常简单和可访问。存储为XML和JSON,但仍然使用平面文件的性能可能非常可比。

您可能需要考虑(如果您刚刚忽略此问题,请将其忽略)清理/过滤文本,以便用户无法通过在评论文本中输入“</p>”。

1

XML是很好的,干净的方式来存储这种类型的数据。在Python中,你可以使用lxml创建/更新文件:

from lxml import etree 

P_XML = 'xml_file_path.xml' 

def save_comment(title_text, comment_text): 
    comment = etree.Element('comment') 
    title = etree.SubElement(comment, 'title') 
    title.text = title_text 
    comment.text = comment_text 
    f = open(P_XML, 'a') 
    f.write(etree.tostring(comment, pretty_print=True)) 
    f.close() 

save_comment("FIRST!", "FIRST COMMENT!!!") 
save_comment("Awesome", "I love this site!") 

这是一个简单的开始,但你可以做更多的事情(即设置为每个评论的ID,使用LXML解析器在XML阅读并添加到它而不是仅附加文件)。

1

平面文件是持久性的最快形式。期。没有格式化,编码,索引,锁定或任何东西。

JSON(和YAML)会产生一些开销。他们会更慢。有一些必须完成的格式。

XML比JSON/YAML带来更多开销。它会更慢。有相当数量的格式必须完成。

开销越大,它会越慢。

这些都与清理注释输入有关,因此它将显示为有效的HTML。在将文本保存到文件之前,您应该使用cgi.escape转义注释中任何类似HTML的字符序列。