在对网站设计和开发进行研究期间,我们可能遇到过用于描述网站类型的两个术语:“静态”和“动态”。
如果您正在构建自己的网站,选择静态网站还是动态网站是需要做出的首要决定之一,因为它将决定网页如何存储并在浏览器中传递给访问者。
静态网站和动态网站的区别在于,静态网站对于每个访问它们的用户来说都是一样的,并且只有在开发人员修改源文件时才会发生变化,而动态网站可以向不同的访问者呈现不同的信息。
无论网站看起来多么复杂,网页的核心只是显示在网络浏览器中的 HTML 文件。当我们访问一个网站时,浏览器会向托管该网站的 Web 服务器发送一个请求,服务器会通过发回一个 HTML 文件(以及一些其他相关文件)来做出响应。
最终,静态和动态网站都会生成 HTML 文件,但网站“静态”与“动态”的区别取决于服务器在将其发送给用户之前如何创建此 HTML 文件。要了解其中的区别,让我们首先了解静态网站的工作原理。
静态网站由存储在 Web 服务器上的固定数量的预构建文件组成。这些文件是用 HTML、CSS 和 JavaScript 编写的,它们被称为“客户端”语言,因为它们在用户的 Web 浏览器中执行。当用户使用 URL 向服务器请求页面时,服务器会返回由 URL 指定的 HTML 文件以及任何随附的 CSS 和/或 JavaScript 文件。
在此交换期间,Web 服务器在将文件发送给用户之前不会更改文件,因此网页对于所有请求它的人来说都是完全相同的。内容是“静态的”——改变网站外观的唯一方法是手动更改文件的内容。
这并不意味着静态网站不能具有交互性或吸引力。他们仍然可以拥有可点击的链接和按钮、图像和视频、CTA、表单、数字下载以及由 CSS或 JavaScript 提供支持的动画。有了足够的技巧,你甚至可以让静态网站看起来很漂亮。但是,静态网站对每个人来说总是一样的。
静态网站的常见示例包括简历网站、作品集网站、宣传册网站、一次性登录页面以及其他信息或只读网站。这些网站很小(三到四页或更少),内容有限,不需要个性化内容或频繁更新。
静态网站的大部分好处源于它们的简单性。静态站点是最容易从头开始构建和维护的站点。如果您想快速廉价地启动一个基本网站,静态网站是一个不错的选择。有了 HTML 和 CSS 的知识,你可以编写一个像样的代码,而不需要太多的努力或成本。
在用户端,静态网站也往往比动态网站更快。这是因为静态网站上的页面已经构建并且需要最少的后端处理。服务器只需要检索请求的文件并将它们交付给客户端。由于内容缺乏变化,静态网站也更容易缓存。网站速度,也称为网站性能,对于积极的用户体验至关重要,也会影响搜索引擎排名。
在许多情况下,静态网站并不是最佳选择。最明显的问题是可扩展性:任何时候我们想要进行站点范围内的内容更新,例如更改页面的标题,我们都必须更改每个单独的 HTML 文件。此外,每当我们想添加新页面时,都必须手动创建一个新的 HTML 文件。对于大型网站,这根本不实用。
静态网站的另一个缺点是缺乏个性化。无法为访问者定制内容,页面可能会错过为访问者创造更具吸引力的体验的机会。当然,静态站点可以显示有关您的业务的信息,但是如果可以根据访问者的位置(例如,他们的位置)向访问者显示不同的信息怎么办?为此,需要一个动态站点。
最后,有许多类型的站点是无法静态构建的。例如,电子商务网站通常允许用户将产品添加到他们的购物车并结帐,这是静态网站无法实现的功能,除非依赖第三方工具。
与以相同格式向所有访问者显示相同内容的静态网站不同,动态网站向不同访问者显示不同的信息。访问者看到的内容可以由几个因素决定,例如他们的位置、当地时间、设置和偏好,和/或他们在网站上采取的行动(例如,购物习惯),从而实现更具定制性和互动性经验。
为了在前端实现更大的灵活性,动态网站需要在后端增加更多的复杂性。这些网站不会将每个页面存储为自己的 HTML 文件。相反,Web 服务器“即时”构建页面——当用户请求页面时,服务器从一个或多个数据库中提取信息并构建为客户端定制的 HTML 文件。页面构建完成后,HTML 文件将被发送回用户的浏览器。
为了在后端构建页面,除了客户端语言(HTML、CSS 和 JavaScript)之外,动态网站还使用服务器端脚本语言,如 PHP、Python、Ruby 或服务器端 JavaScript。根据为构建页面而提取的数据量,此过程可能会变得非常复杂。然而,用户看不到任何这个过程——他们只看到浏览器中加载的网页,与静态站点相同。
如今,我们使用的大多数网站都至少采用了一些动态做法。在线商店、社交媒体网站、会员网站、新闻网站、发布网站、博客和 Web 应用程序都在一定程度上依赖于动态内容。
例如,考虑一个电子商务网站,其主页根据他们认为您想要购买的产品推荐产品。这意味着每个访问者都会看到略有不同的主页。当然,为每个人硬编码一个页面并将其存储在服务器上是没有意义的。相反,服务器端代码用于确定您应该看到什么内容,从各种数据库中获取该内容,并从中构建一个页面。
动态内容的其他用例包括根据用户的位置或设置更改页面语言,在用户登录后显示用户之前从您的网站订购的订单,以及根据用户的会员状态控制您网站上的某些内容。
我们已经谈到了动态网站的主要优势:它们使您能够为每个访问者个性化您的网站内容,这意味着更具吸引力的用户体验会带来更多的转化和购买。
除了个性化之外,服务器端脚本非常强大,并为功能提供了无数可能性。动态代码使我们能够构建静态方法根本无法实现的 Web 应用程序、SaaS 软件和丰富的体验。
在动态网站上进行站点范围的更新也容易得多。管理员可以快速轻松地对其站点进行全面更改,而无需更新每个 HTML 文件的源代码。在经常更新内容和外观以跟上其行业的网站上,这是必要的。
最后,动态网站比静态网站更具可扩展性,因为服务器不存储固定数量的页面。相反,服务器在需要时构建一个页面。回到我们的电子商务网站示例,假设您想向您的网站添加几个新产品。无需在 HTML 中构建单独的产品页面,您只需将产品信息存储在数据库中即可。服务器端脚本可以提取这些数据来自动构建产品页面。
由于动态网站比静态网站更复杂,因此从头开始创建它们需要更多的时间、精力和专业知识。
可以使用网站构建器或内容管理系统(CMS) 来处理技术方面的事情,这样就可以更加关注网站的内容和设计。例如,WordPress通过使用服务器端语言 PHP 动态构建其页面来工作。
使用动态网站的另一个权衡是性能可能会下降。动态网站在后端进行更多处理,以便向访问者提供页面,这可能会影响加载时间。有一些方法可以优化网站速度,并且网站建设软件在这方面有所改进。尽管如此,在管理动态站点时,速度绝对是要牢记的,因为几分之一秒的延迟会导致更高的跳出率。
在网络的早期,所有网站都是静态的——网站被保存为存储在服务器上的页面集合,这些页面可以在请求时交付给客户端。
然而,随着用户对网站的期望越来越高,例如更个性化的显示、自动生成的内容以及最终通过云提供的成熟软件,这种方法变得不那么可行了。
静态方法适用于想要快速观看的没有个性化的小型网站。除此之外,可能需要一个动态网站。