我已经看过我父亲网站背后的PHP脚本,该脚本是由一位雇佣程序员构建的。现在,我不认为我比他好,但我认为它的技术可能不是最好的。
该网站具有动态页面正文,意思是我的父亲可以通过特定的管理页面修改网站中大多数网页的HTML内容。现在它是通过数据库创建的:页面都存储在数据库中,每个请求都处理一个从数据库中提取页面并实现它的查询。
现在,我认为这种方式非常糟糕,主要是因为它需要(即使没有那么昂贵,如果缓存)对数据库的额外查询。 将页面存储为HTML文件然后只在需要时修改文件本身不是更有效吗?通过这种方式,我认为编辑文件的速度更快,每个请求加载html文件的内容比执行查询要容易得多,速度也快。
是吗?还有其他(更有效)的方法来处理这种情况吗?答案 0 :(得分:2)
这是本世纪的问题:)这个问题没有确切的答案。只是性能提示。人们正在努力优化最近30年的页面加载时间。
答案 1 :(得分:2)
在假设的'/ mypages'文件夹下修改HTML网页并不是最好。
我能想到更多。
答案 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:
那就是说,我认为我说的是所有主要的CMS都使用这两种方法,这取决于他们处理的数据类型。例如,HTML标题通常部分存储为单独的文件,就像JS文件和样式表一样。
答案 3 :(得分:0)
这一切都取决于内容。如果您有不同的内容,例如新闻,则可以更轻松地将数据存储在数据库中,以用于每个新创建并将数据加载到模板中。但是当您拥有单个内容(如巨大的文章或信息页面)时,您可以使用HTML来存储数据。
这还取决于您是否需要多语言页面。你可以创建一个只有HTML的多项目页面。但这里和上面一样。你有什么内容。许多不同的条目或不太相同的内容?
但是,到目前为止我所做的是我同时做了两件事:当客户想要一个包含新闻脚本和多语言等的页面时,我创建了一个用户可以登录进入新闻条目的页面。以不同语言存储新闻,但是通过HTML对其他网站进行更改,并且每种语言都有不同的html文件。
编辑:
这也取决于用户。如果用户不知道如何使用HTML但想要自己更改网站,那么唯一可用的选项就是给他一个管理中心进行更改。或者如果你不想给用户多少力量:D
答案 4 :(得分:0)
我的观点:大多数CMS处理大量数据库访问并加载许多文件,以便编译最终发送给访问者的一个页面。但是,对于大多数站点来说,没有性能问题(即大多数页面加载在< 1s中)。如果你遇到问题我会感到惊讶,只有一个数据库访问权限。 但是为了处理,为什么使用数据库,当你的网站真的不需要它? 我为客户创建了几个站点,我使用一个index.php加载一个菜单文件和一个页脚文件对所有页面都是相同的,并在它之间加载各个选定的html文件。因此,为了编辑页面,您可以使用任何编辑器打开和编辑相应的html。非常简单。