在大型网站中,访问者看到的页面基本上是静态页面。为什么都要把页面静态化呢?把页面静态化,好处有很多。例如:访问速度快,更有利于搜索引擎收录等。目前主流的静态化主要有两种:一种是通过程序将动态页面抓取并保存为静态页面,这样的页面的实际存在于服务器的硬盘中,另外一种是通过WEB服务器的 URL Rewrite的方式,他的原理是通过web服务器内部模块按一定规则将外部的URL请求转化为内部的文件地址,一句话来说就是把外部请求的静态地址转化 为实际的动态页面地址,而静态页面实际是不存在的。这两种方法都达到了实现URL静态化的效果,但是也各有各自的特点。
将动态页面转化为实际存在的静态页面这种方法,由于静态页面的存在,少了动态解析过程,所以提高了页面的访问速度和稳定性,使得优化效果非常明显。所以这种方法被广泛采用。但是它的局限性同样存在。对于大型网站而言,这种方法将带来不可忽视的问题。
一、由于生成的文件数量较多,存储需要考虑文件、文件夹的数量问题和磁盘空间容量的问题;
二、页面维护的复杂性和大工作量,及带来的页面维护及时性问题,需要一整套站点更新制度。
而URL Rewrite方式特点同样鲜明,由于是服务器内部解析的地址,所以内容是实时更新的,也不存在文件管理和硬件问题,维护比较方便。在服务器级URL Rewrite重写技术并不影响页面的执行速度。但是URL Rewrite的门槛比较高,国内虚拟主机大多不支持,而且虚拟主机是目录级的URL Rewrite,通过遍历目录读物URL转发规则的方式将大大降低页面的执行速度。
除了抓取动态页面和URL Rewrite的方法外,在这里我们再看一下另外的一种方法。此方法的核心思想就是:把页面划分成子数据块,每个数据块可能是一个inc文件,也可能多个数据块包含在一个inc文件中。具体的数据块划分根据页面的业务结构来处理。比如:网站头尾等公共数据块可以独立成一个文件。这种方法需要考虑以下几个方面:
1、用什么方式生成页面及里面的数据块
2、页面的更新机制;
3、大量的页面文件的维护工作;
4、页面数据块的及时性。
这种方式的话,通常可以在后台增加一个服务程序,专门生成某个频道或栏目的页面。这样虽然可行,按照频道分的话,逻辑结构也清晰。
【单服务模式】
这样会带来一些问题。例如:当频道修改后,相应的服务程序都要重新翻一遍。如果频道栏目很多,对应的服务程序也会很多,导致程序的维护工作量大。前台开发人员不仅要去做页面,也要考虑后台的服务程序结构,给他们增加了不必要的开发难度,降低了开发效率。
【多服务模式】
而在多服务模式下,会出现多台服务去争抢指令数据的情况。动作指令的状态必须在多个服务之间同步。服务升级了,也要一个一个去更新,出现错误了也要一个一个去排查。。。。。。
那么有没有一种方法能把生成页面的功能独立抽象成一个平台,同时提供一个程序接口,前台开发人员只需要按照这个接口,开发业务组件即可。现在前台开发人员只需要把写好的业务组件,部署到指定的地方即可。剩下的事情交给这个平台去做,这样就简化了系统发布,维护工作,减轻了前台开发人员的工作量,提高了他们的开发效率。
【平台集中处理模式】
动作指令是指页面更新的动作,当页面数据有变化时,会根据业务规则从某个地方发出一个动作。它的来源大致可以分为三种:前台页面触发,后台内容管理系统触发,后台自动定时触发。
静态数据生成系统与业务组件的接口设计。通过反射的方式调用业务组件,接口的参数在指令结构的基础上扩展即可。比如增加一些错误描述,数据库链接对象等。
数据分发是一个独立的数据传输系统,它负责根据预先设定好的配置,把生成的页面数据传输到指定的web服务器上。
为了使系统在随着网站访问量的上升的同时做到水平扩展,加快指令的处理速度。所以需要把系统部署到多台服务器上,这样以来各个子系统就要统一通信协调。可以用MQ消息作为子系统之间的通信手段。子系统的部署模式变为Master-Slave的形式。Master主机上的系统负责读指令,然后把指令发送到MQ。各个Slave主机系统负责接收MQ消息指令,调用业务组件并更新某条指令的状态,这样就把处理业务逻辑的压力平均的分配到了各台slave主机。
对于一个大型网站来说,生成的页面数据会非常多,管理这些页面文件又是一个问题。例如有的页面被删除了,而已经生成的页面数据还会存在各个web服务器上。这时就需要通过后台系统记录这些页面文件的部署位置,以便今后统一管理。同时业务组件的量也可能会比较多,特别是存在多版本的情况下,所以也需要把业务组件的配置情况记录到数据库中,便于统一管理。
分享到:
相关推荐
运行上述命令后,你的静态Web服务器将在指定端口上启动,你可以通过浏览器访问`http://localhost:8080`(或相应端口)来查看和测试你的静态文件。 此外,除了Python内置的服务器,还有许多其他轻量级的静态Web...
在Web开发中,动态代理常常用于增强业务逻辑,比如日志记录、权限检查等,使得代码更加模块化和可维护。 首先,我们来看静态代理。静态代理是通过手动创建一个代理类来实现对目标对象的控制。在给定的例子中,`...
在Web开发领域,静态化是一种常见的技术手段,它将动态生成的网页转换为静态HTML文件,从而减少服务器处理请求的负担,加快页面加载速度,并提升搜索引擎优化(SEO)效果。 ASP(Active Server Pages)是微软推出的...
在Web开发中,首页静态化是常见的性能优化手段。 首先,我们需要了解动态首页和静态首页的区别。动态首页是由服务器端的脚本(如PHP、JSP或ASP.NET)实时生成的,每次请求都会根据数据库中的数据动态生成页面内容。...
在Spring MVC框架中,静态资源处理是一个至关重要的部分,它涉及到网页应用中JavaScript、CSS、图片等非Java代码文件的访问。Spring MVC默认情况下,并不直接处理这些静态资源,而是交由Web服务器(如Tomcat)来处理...
网站静态化是提升大型站点性能和可扩展性的重要策略,尤其在处理高并发访问和优化SEO(搜索引擎优化)方面有着显著优势。以下是对这个大型站点网站静态化实现方案的详细解读。 1. **静态化原理**: 静态化是将动态...
ASP.NET页面静态化和伪静态化是Web开发中提高网站性能和SEO优化的重要技术。页面静态化是指将原本动态生成的HTML页面转化为静态HTML文件,这样用户请求时无需执行服务器端的代码,直接从硬盘读取文件,提高了访问...
动态-静态互转功能允许在用户访问量大时减轻服务器压力,而在需要快速响应搜索引擎爬虫时提供优化的静态页面。 3. **仿百度知道**:百度知道是一个非常成功的在线问答社区,用户可以提出问题,其他用户或专家可以...
6. **响应式设计**:考虑到不同的用户可能在各种设备上访问网页,响应式设计确保网页在手机、平板电脑和桌面电脑上都能良好显示。 7. **优化与性能**:学习如何优化图像大小、合理组织文件结构以及使用外部样式表和...
Java页面静态化是一种提高Web应用性能的技术,它通过将动态生成的HTML页面转换为静态HTML文件,从而减少了服务器处理请求的负担,加快了用户访问速度。这种技术在高并发、大数据量的网站中尤其重要,因为它能显著...
- 实现URL重写,使动态请求看起来像是访问静态页面。 - 设计缓存策略,定时或按需更新静态文件。 在PHP中,可以使用缓存库如Memcached或Redis,或者直接在PHP代码中实现文件缓存来生成和维护静态页面。 总结,基于...
标题中的"miniweb服务器一键搭建静态网站"表明我们要讨论的是一个小型、简易的Web服务器软件,主要用于快速构建静态网页服务。这种服务器可能设计简洁,易于安装和操作,适合个人开发者或者小型团队进行本地开发和...
静态化流程包括从数据库和配置文件获取数据、使用定时任务或手动触发生成静态化任务、通过Activemq进行任务分发、运用P2P消息传递到生成服务、使用Freemarker模板生成HTML页面、最后通过文件分发系统发布到各个Web...
在本项目"springboot页面静态化-Thymeleaf"中,我们将探讨如何利用Thymeleaf技术实现Spring Boot应用的页面静态化,并通过一个简单的示例来演示其基本用法。 1. **Thymeleaf简介** Thymeleaf是一个开放源代码的...
- **URL重写**:静态化后,动态URL需要通过URL重写技术转换为伪静态形式,保持用户访问习惯和搜索引擎的识别。 - **缓存策略**:静态页面的缓存设置也需考虑,以免用户始终看到旧的缓存版本。 - **文件管理**:...
标签页静态化则是将博客的标签聚合页面也转换为静态文件,这样当用户访问某个标签的聚合页面时,可以快速加载,提供更好的用户体验。这个特性对于拥有丰富标签分类的博客来说,能够显著提升网站的整体性能。 安装此...
3. 标签结构:正确使用HTML语义化标签,如`<header>`, `<nav>`, `<main>`, `<article>`, `<footer>`等,提升可读性和可访问性。 总结,创建节日HTML静态页面需要结合HTML的结构特性,运用CSS和JavaScript实现视觉...
当用户访问已经静态化的页面时,Web服务器可以直接返回预先生成的HTML文件,无需再解析PHP脚本,执行数据库查询等复杂操作。这极大地减少了服务器响应时间,提升了用户体验,同时减轻了数据库和服务器CPU的压力。 *...
- **PageCache**:一些Web框架如Spring MVC提供了内置的缓存机制,可以用于实现页面静态化。 - **Nginx** 或 **Apache** 的URL重写功能:可以通过配置规则,将动态请求重定向到对应的静态HTML文件。 在进行页面静态...