热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

即时渲染标记还是存储HTML?-Rendermarkupon-the-flyorstorehtml?

Anyadvicewhathasworkedforyouwhendealingwithuser-enteredmarkup,e.g.wikiormarkdown.Ih

Any advice what has worked for you when dealing with user-entered markup, e.g. wiki or markdown. I have both CPU & database space costs, so I'm not sure which way to go.

在处理用户输入的标记时,对您有用的任何建议,例如:维基或降价。我有CPU和数据库空间成本,所以我不知道该走哪条路。

  1. Store markup in database & render to html on the server for each pageview. (Less database space but more CPU usage)

    将标记存储在数据库中并渲染到服务器上用于每个网页浏览的html。 (减少数据库空间但CPU使用率更高)

  2. Store markup in database & render to html on the client using Javascript. (Possibly more difficult to implement)

    使用Javascript将标记存储在数据库中并渲染到客户端上的html。 (可能更难实施)

  3. Store just the rendered html in the database & convert back to markup if editing required. (Again, possibly tricky to implement).

    将渲染的html存储在数据库中,如果需要编辑,则转换回标记。 (再次,可能很难实现)。

  4. Store both html & markup in the database. (Double the database space).

    将html和标记存储在数据库中。 (数据库空间加倍)。

  5. Something else.

(I'm using MFC & Linqtosql).

(我正在使用MFC和Linqtosql)。

4 个解决方案

#1


I would store it in the database as Wiki markup, then hold the transformed HTML output in memory in a cache on the webserver. Whichever web technology you're using, all should support this - a basic tuple (hashtable) keyed on the url, or id, or similar.

我将它作为Wiki标记存储在数据库中,然后将转换的HTML输出保存在内存中的Web服务器的缓存中。无论你使用哪种网络技术,所有人都应该支持这一点 - 一个基本的元组(散列表),键入url,id或类似的东西。

#2


I would store the markup and render html server side on the fly. You can use server side caching to reduce the amount of actual computation you perform and you get to keep a representation that has reasonable semantics and can be rendered to text/html/pdf if needed.

我会存储标记并动态呈现html服务器端。您可以使用服务器端缓存来减少您执行的实际计算量,并且可以保留具有合理语义的表示,并且可以根据需要呈现为text / html / pdf。

#3


Easiest way would be to store markup and render the HTML on demand in a cache (possible on disk or in memcached onjects) with the timestamp of render. That way you can check whether you need to render again because the markup has changed or just serve the cached HTML. That is the way most Ruby on Rails apps/CMS work.

最简单的方法是使用render的时间戳存储标记并在缓存中(可能在磁盘上或在memcached onjects中)呈现HTML。这样,您可以检查是否需要再次渲染,因为标记已更改或仅提供缓存的HTML。这就是大多数Ruby on Rails应用程序/ CMS的工作方式。

#4


I would store it in the database as RST markup, and transform to HTML as needed. Since you're probably using a front-end (e.g. JSP, PHP, Django or something else that renders a template language) the additional processing for RST won't introduce much overhead.

我将它作为RST标记存储在数据库中,并根据需要转换为HTML。由于您可能正在使用前端(例如JSP,PHP,Django或其他呈现模板语言的东西),因此对RST的额外处理不会带来太多开销。

Actually measure the actual overhead of rendering the markup into HTML before deciding to implement a complex caching mechanism.

实际上,在决定实现复杂的缓存机制之前,测量将标记呈现为HTML的实际开销。

The "(Less database space but more CPU usage)" isn't a measured fact, it's an assumption that may turn out to be not true.

“(更少的数据库空间,但更多的CPU使用率)”不是一个测量的事实,它是一个可能结果不是真的假设。


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 结合R语言学习多元统计分析1——相关系数及其检验 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • 绝对时间:absTime相对时间:百分比%timeIDLE是空闲任务。RUN_Time_State:port。。。()初始化一个外设提供时基单元具体初始化要自己操作这个定时器的分辨 ... [详细]
  • Linux 程序设计学习笔记----动手编写makefile文件
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
瑶瑶2502863511
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有