是为每篇文章创建一个独特的html文件的好习惯吗?

时间:2011-02-06 21:11:24

标签: java mysql java-ee

抱歉主题名称不好,我想不出更好的事情;)

我正在制作一个新闻广播网站项目,并且利益相关者要求我为每篇文章创建一个独特的html文件并将其保存在磁盘上而不是使用像mysql这样的dbms,因此用户可以直接访问该文件并且不需要计算,因此在这种情况下不会有任何瓶颈。 我这样做了 而我的问题是,这是(他问我)在编程方面的一个好的和受欢迎的做法吗? 有什么优点和缺点?

谢谢大家,对不起我的英文写作不好:P

6 个答案:

答案 0 :(得分:2)

如果你有一个模板并且可以自动生成这些页面,那么这可能是一个很好的做法。就像你说的,它会阻止你的服务器生成页面。它只需要通过普通页面。

如果您需要更改布局或需要编辑文章,您可以重新生成页面。

虽然很多网页总是有一些动态内容,比如日期,用户信息或其他会话或时间特定数据,但这种情况很常见。在这种情况下,您无法缓存整个页面。当然,你可以将两者结合起来。拥有动态索引页面和首页,只缓存实际文章本身。但我在你的问题中读到,这就是你现在所做的。

优点:

  • 更快地检索页面
  • 减少网络服务器的负担
  • 减少数据库服务器的负载

缺点:

  • 修改文章时需要做一些额外的工作来更新缓存
  • 页面中不能包含任何动态内容
  • 可能根本没有问题。大多数Web服务器都能够为大量动态页面提供服务(过早优化是所有恶意的根源)。
  • 还有其他方法来加快速度,没有上述缺点。您可以在Memcache中缓存查询结果和/或使用APC缓存来加速PHP代码并减少磁盘I / O.

但是有些网络托管公司完全专注于提供静态内容。静态内容也可以是来自内存的服务器,使其比APC缓存的动态内容更快,所以如果你真的真的需要性能,是的,这是要走的路。但我非常怀疑你这样做。

答案 1 :(得分:1)

绝对不是一种常见的做法,我不会这样做。特别是出于瓶颈的原因 - 你不会有任何瓶颈。也没有任何性能问题。您的网站可能获得多少独立访问者?成千上万?

事实上,从磁盘读取更可能是一个问题。数据库操作可以优化,缓存在内存中等 - 数据库服务器执行各种优化。另一方面,您每次都读取文件(或自己处理缓存)。

通常和首选的方法是:

  • 存储和加载来自数据库的内容
  • 页面有一个模板(页眉+页脚),只插入内容
  • 有一个带有编辑器的管理面板(尽可能丰富),您可以在其中修改相关内容

答案 2 :(得分:1)

静态页面适用于小型网站。如果你有机会,那就去吧,但如果你需要复杂的操作,动态页面结构应该是可行的方法。

对于文章网站,我会选择动态网页,因为这个概念是动态的(您需要更新网站,添加新文章,或者添加评论,用户活动等新功能)。

直接从管理面板添加/删除/编辑文章更容易,使用静态页面,您必须通过html代码找到自己的方式。

列表会继续......

答案 3 :(得分:1)

如果没有一个不太合适的模板系统,你必须将完整的文章和页面布局和样式存储在一个文件中。

这意味着,很难在所有已发布的文章中更新外观,如果您想查询文章列表并返回列表(例如那些形成特定作者或特定类别),你也有点卡住了。

答案 4 :(得分:1)

如果您认为它可以替代您的数据库:不,那不是很好的实践。你丢失了很多信息,以后编辑页面也会更难设置索引搜索功能,......

如果您将其视为缓存解决方案:那么是的,这是一种很好的做法,也是一种常用技术。但想想如何进行缓存,何时用新版本替换文件,只有少数写入访问和对页面的大量读取访问(这是典型的文章网站^^)

答案 5 :(得分:0)

我开始问自己,为什么利益相关者可能会要求您以这种方式实施系统。只要您的系统满足要求,他/她为什么要关心?对此有两种可能的答案:

  • 利益相关者是一个控制狂;例如一个喜欢干扰开发人员工作的技术人员。
  • 利益相关者过去经历过不好的经历;例如以前的系统,其中的内容被“锁定”在一个数据库中,这个数据库具有笨重的前端,为用户带来了生命的地狱。

从这个角度来看,你将如何解决这个问题?我的看法是你需要深入了解利益相关者为何要求这样做。他有一些真正的担忧吗?你能解决系统设计中的问题吗?

底线是“这是最佳实践”并不是这里的首要标准。可以说,“客户想要的东西”或“客户需要的东西”更为重要。

我认为你需要做的是:

  • 了解利益相关方的真正关注点。
  • 与他/她(以及其他利益相关者)讨论解决这些问题的设计方案。向他们展示替代方案并对其影响进行诚实的评估,并让他们参与决策。