6

我查看了我父亲网站背后的 PHP 脚本,它是由一名聘请的程序员构建的。现在,我不认为我比他更好,但我认为它的技术可能不是最好的。

网站有动态的页面正文,意思是我爸爸可以通过特定的管理页面修改网站中大部分网页的HTML内容。现在它是通过数据库制作的:页面都存储在数据库中,每个请求都处理一个从数据库中获取页面并实现它的查询。

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

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

4

5 回答 5

2

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

于 2012-06-28T11:57:22.103 回答
2

不,在假设的“/mypages”文件夹下固定 HTML 页面并不是更好。

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

我能想到更多。

于 2012-06-28T12:10:48.993 回答
1

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

  • 临数据库:

    • 安全性:这是一个明显的、有点矛盾的论点,但尽管如此。如果您决定将内容作为单独的文件存储在服务器上,则它们需要存储在不允许公共访问的目录中。如果没有,用户可能能够单独访问您网站的各个部分,这会让人觉得不专业。
      不怀好意的人也可以轻松地更改您网站的内容。当然,有很多方法可以防止这种情况,并提高整体安全性。数据库系统,如果留给自己的设备,也不是完全安全的,但为黑客提供了一个额外的障碍,只需很少的努力。
      注意:安全性参数取决于您的脚本过滤注入的能力以及您设置服务器的安全性。

    • 磁盘使用情况。当使用单独的文件来组成每个请求的页面时,服务器必须在每个请求上访问其 HD。同样,缓存在一定程度上解决了这个问题,但缓存数据库查询结果更容易(通常)更好(性能方面)。要么在你的数据库服务器上,要么在 PHP 中,或者更好的是,两者兼而有之。

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

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

  • 专业版 HTML:

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

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

于 2012-06-28T12:14:43.407 回答
0

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

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

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

编辑:

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

于 2012-06-28T12:04:59.280 回答
0

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

于 2012-06-28T12:15:07.713 回答