您好我在服务器上运行了一个小评论shoutbox类型的cgi进程,目前当有人发表评论时我只是将该评论格式化为html,即
<p class="title">$title</p>
<p class="comment">$comment</p>
并存储在平面文件中。 如果在我自己的简单规范中重新实现xml或json中的存储,或者坚持使用简单的html路由,那么它在LOC中会更快且可接受地低吗?
我不想为此使用关系数据库。
答案 0 :(得分:3)
如果平面文件足够快,那么请使用它,因为它非常简单且易于访问。存储为XML和JSON但仍然使用平面文件可能在性能上非常可比。
您可能需要考虑(如果您只是将其排除在问题之外,请忽略此选项)清理/过滤文本,以便用户无法通过以下方式破坏您的HTML输入“&lt; / p&gt;”在评论文本中。
答案 1 :(得分: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并添加到它而不是仅仅附加文件)。
答案 2 :(得分:1)
平面文件是最快的持久性形式。期。没有格式化,编码,索引,锁定或其他任何东西。
JSON(和YAML)施加了一些开销。他们会慢一些。必须要做一些格式化。
XML比JSON / YAML带来更多的开销。它会慢一些。必须完成相当多的格式化。
开销越大,它就越慢。
这些都与清理注释输入有关,因此它将显示为有效的HTML。在将文本保存到文件之前,您应该使用cgi.escape来转义注释中任何类似HTML的字符序列。