什么是创建动态页面主体的最有效方法?

时间:2012-06-28 11:52:10

标签: php html database file

我已经看过我父亲网站背后的PHP脚本,该脚本是由一位雇佣程序员构建的。现在,我不认为我比他好,但我认为它的技术可能不是最好的。

该网站具有动态页面正文,意思是我的父亲可以通过特定的管理页面修改网站中大多数网页的HTML内容。现在它是通过数据库创建的:页面都存储在数据库中,每个请求都处理一个从数据库中提取页面并实现它的查询。

现在,我认为这种方式非常糟糕,主要是因为它需要(即使没有那么昂贵,如果缓存)对数据库的额外查询。 将页面存储为HTML文件然后只在需要时修改文件本身不是更有效吗?通过这种方式,我认为编辑文件的速度更快,每个请求加载html文件的内容比执行查询要容易得多,速度也快。

是吗?还有其他(更有效)的方法来处理这种情况吗?

5 个答案:

答案 0 :(得分:2)

这是本世纪的问题:)这个问题没有确切的答案。只是性能提示。人们正在努力优化最近30年的页面加载时间。

答案 1 :(得分:2)

在假设的'/ mypages'文件夹下修改HTML网页并不是最好。

  • 如果用户希望在其网页中约500个内容,该怎么办?他最终会得到500个文件。
  • 是的,他们会得到更快的服务,但这足以应对下面的大问题吗?
  • 页面翻译怎么样?这将是静态html文件中的噩梦。
  • 页面以这种方式呈现,因为它们是动态的;也就是说,东西可以被第三方/插件“输入”(比如说)并立即应用到多个内容中;如何将相同的内容应用到众多 HTML 中,然后再将其更改
  • 如果你想改变< HEAD> * er和* < SCRIPT> **已加载?在每次更改中,你都会被迫在所有500个内容中这样做。
  • 那些 .html 文件中包含的 PHP 怎么样?如果您没有将PHP放入此中,这不是一个原因,但如果重命名/删除了包含的php文件,您将需要更改大量更新中的所有文件。
  • 想想模板;现代 CMS (或管理页面)动态的原因是因为它们可以在不影响内容本身的情况下更改类/样式等。对所使用的主题或单个类的单个更改将导致(再次)大量更新。
  • 数据库也是文件,但运行更快。如果您担心性能,可以对数据库进行编程以使用缓存(查询如 SELECT data FROM content WHERE id = 1 ),这样查询在性能方面几乎不可查询。

我能想到更多。

答案 2 :(得分:1)

CMS应该使用数据库来存储/获取动态内容有几个很好的理由。正如有几个原因可能导致您不想依赖数据库。

  • Pro Db:

    • 安全性:这是一个明显的,有点矛盾的论点,但仍然如此。如果您决定将内容作为单独的文件存储在服务器上,则需要将它们存储在不允许公共访问的目录中。如果没有,用户可能会分开访问您网站的块,这是不专业的。
      具有卑鄙意图的人也可以轻松地改变您网站的内容。当然,有很多方法可以防止这种情况,并提高整体安全性。数据库系统在放置到他们自己的设备时也不是完全安全的,但是以最小的努力为黑客提供了额外的障碍。
      注意:安全论点或者如何落后于以及您的脚本过滤注入,以及您设置服务器的安全性。

    • 磁盘使用情况。当使用单独的文件来组成每个请求的页面时,服务器必须在每个请求上访问其HD。同样,缓存在某种程度上解决了这个问题,但是更容易并且(通常)更好地缓存数据库查询结果(性能明智)。在数据库服务器上,在PHP中,或者更好的是,两者都可以。

    • 记录日志。我的意思是:当你改变内容时,数据库驱动的CMS更容易管理。如果您更改了内容,并且想要撤消/回滚更改,则DB是实现此类功能的最简单方法。使用HTML,您很快就会发现自己涉及大量名为site_menu_block_YYYY-mm-dd.html.backup的文件。即使这是通过脚本完成的,它几乎肯定会比使用DB慢。

    • 翻译:正如vlzvl指出的那样,如果你使用的是静态页面,你最终会得到每个页面N次,每种语言一次。在更改样式表时,您还必须更改N个文件。哪个资源很贵。或者,您的脚本将为每个请求解析HTML模板文件,并使用实际内容解析XML文件。这样您就失去了HTML文件的SEO优势,会导致额外的服务器负载减慢您的网站速度。

  • 专业版HTML:

    • 我只能在这里给出一个坚实的专业论证:以这种方式获得SEO网站要容易得多。只允许搜索引擎索引单独的文件。这确实会降低CMS的整体安全性严重

那就是说,我认为我说的是所有主要的CMS都使用这两种方法,这取决于他们处理的数据类型。例如,HTML标题通常部分存储为单独的文件,就像JS文件和样式表一样。

答案 3 :(得分:0)

这一切都取决于内容。如果您有不同的内容,例如新闻,则可以更轻松地将数据存储在数据库中,以用于每个新创建并将数据加载到模板中。但是当您拥有单个内容(如巨大的文章或信息页面)时,您可以使用HTML来存储数据。

这还取决于您是否需要多语言页面。你可以创建一个只有HTML的多项目页面。但这里和上面一样。你有什么内容。许多不同的条目或不太相同的内容?

但是,到目前为止我所做的是我同时做了两件事:当客户想要一个包含新闻脚本和多语言等的页面时,我创建了一个用户可以登录进入新闻条目的页面。以不同语言存储新闻,但是通过HTML对其他网站进行更改,并且每种语言都有不同的html文件。

编辑:

这也取决于用户。如果用户不知道如何使用HTML但想要自己更改网站,那么唯一可用的选项就是给他一个管理中心进行更改。或者如果你不想给用户多少力量:D

答案 4 :(得分:0)

我的观点:大多数CMS处理大量数据库访问并加载许多文件,以便编译最终发送给访问者的一个页面。但是,对于大多数站点来说,没有性能问题(即大多数页面加载在< 1s中)。如果你遇到问题我会感到惊讶,只有一个数据库访问权限。 但是为了处理,为什么使用数据库,当你的网站真的不需要它? 我为客户创建了几个站点,我使用一个index.php加载一个菜单文件和一个页脚文件对所有页面都是相同的,并在它之间加载各个选定的html文件。因此,为了编辑页面,您可以使用任何编辑器打开和编辑相应的html。非常简单。