`
java.jianan
  • 浏览: 19131 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
   在大型网站中,访问者看到的页面基本上是静态页面。为什么都要把页面静态化呢?把页面静态化,好处有很多。例如:访问速度快,更有利于搜索引擎收录等。目前主流的静态化主要有两种:一种是通过程序将动态页面抓取并保存为静态页面,这样的页面的实际存在于服务器的硬盘中,另外一种是通过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服务器上。这时就需要通过后台系统记录这些页面文件的部署位置,以便今后统一管理。同时业务组件的量也可能会比较多,特别是存在多版本的情况下,所以也需要把业务组件的配置情况记录到数据库中,便于统一管理。
分享到:
评论

相关推荐

    机器学习算法-05-静态web服务器-命令行启动动态绑定端口号.ev4.rar

    运行上述命令后,你的静态Web服务器将在指定端口上启动,你可以通过浏览器访问`http://localhost:8080`(或相应端口)来查看和测试你的静态文件。 此外,除了Python内置的服务器,还有许多其他轻量级的静态Web...

    基于框架的Web开发-静态代理和动态代理原理.docx

    在Web开发中,动态代理常常用于增强业务逻辑,比如日志记录、权限检查等,使得代码更加模块化和可维护。 首先,我们来看静态代理。静态代理是通过手动创建一个代理类来实现对目标对象的控制。在给定的例子中,`...

    老y文章管理系统全站静态化插件

    在Web开发领域,静态化是一种常见的技术手段,它将动态生成的网页转换为静态HTML文件,从而减少服务器处理请求的负担,加快页面加载速度,并提升搜索引擎优化(SEO)效果。 ASP(Active Server Pages)是微软推出的...

    首页静态化步骤

    在Web开发中,首页静态化是常见的性能优化手段。 首先,我们需要了解动态首页和静态首页的区别。动态首页是由服务器端的脚本(如PHP、JSP或ASP.NET)实时生成的,每次请求都会根据数据库中的数据动态生成页面内容。...

    springmvc-demo03-静态资源访问处理.zip

    在Spring MVC框架中,静态资源处理是一个至关重要的部分,它涉及到网页应用中JavaScript、CSS、图片等非Java代码文件的访问。Spring MVC默认情况下,并不直接处理这些静态资源,而是交由Web服务器(如Tomcat)来处理...

    大型站点网站静态化实现方案

    网站静态化是提升大型站点性能和可扩展性的重要策略,尤其在处理高并发访问和优化SEO(搜索引擎优化)方面有着显著优势。以下是对这个大型站点网站静态化实现方案的详细解读。 1. **静态化原理**: 静态化是将动态...

    ASP.NET页面静态化,伪静态化

    ASP.NET页面静态化和伪静态化是Web开发中提高网站性能和SEO优化的重要技术。页面静态化是指将原本动态生成的HTML页面转化为静态HTML文件,这样用户请求时无需执行服务器端的代码,直接从硬盘读取文件,提高了访问...

    基于ASP的快问仿百度知道问答系统 动态-静态-互转版.zip

    动态-静态互转功能允许在用户访问量大时减轻服务器压力,而在需要快速响应搜索引擎爬虫时提供优化的静态页面。 3. **仿百度知道**:百度知道是一个非常成功的在线问答社区,用户可以提出问题,其他用户或专家可以...

    我的家乡--静态网页 dreamweaver

    6. **响应式设计**:考虑到不同的用户可能在各种设备上访问网页,响应式设计确保网页在手机、平板电脑和桌面电脑上都能良好显示。 7. **优化与性能**:学习如何优化图像大小、合理组织文件结构以及使用外部样式表和...

    有关Java页面静态化

    Java页面静态化是一种提高Web应用性能的技术,它通过将动态生成的HTML页面转换为静态HTML文件,从而减少了服务器处理请求的负担,加快了用户访问速度。这种技术在高并发、大数据量的网站中尤其重要,因为它能显著...

    基于PHP_MySQL的Web系统安全防范及全站静态化.pdf

    - 实现URL重写,使动态请求看起来像是访问静态页面。 - 设计缓存策略,定时或按需更新静态文件。 在PHP中,可以使用缓存库如Memcached或Redis,或者直接在PHP代码中实现文件缓存来生成和维护静态页面。 总结,基于...

    miniweb服务器一键搭建静态网站

    标题中的"miniweb服务器一键搭建静态网站"表明我们要讨论的是一个小型、简易的Web服务器软件,主要用于快速构建静态网页服务。这种服务器可能设计简洁,易于安装和操作,适合个人开发者或者小型团队进行本地开发和...

    上品折扣网站静态化方案1

    静态化流程包括从数据库和配置文件获取数据、使用定时任务或手动触发生成静态化任务、通过Activemq进行任务分发、运用P2P消息传递到生成服务、使用Freemarker模板生成HTML页面、最后通过文件分发系统发布到各个Web...

    springboot页面静态化-Thymeleaf

    在本项目"springboot页面静态化-Thymeleaf"中,我们将探讨如何利用Thymeleaf技术实现Spring Boot应用的页面静态化,并通过一个简单的示例来演示其基本用法。 1. **Thymeleaf简介** Thymeleaf是一个开放源代码的...

    通用首页静态化工具-可以把首页转化为静态页面

    - **URL重写**:静态化后,动态URL需要通过URL重写技术转换为伪静态形式,保持用户访问习惯和搜索引擎的识别。 - **缓存策略**:静态页面的缓存设置也需考虑,以免用户始终看到旧的缓存版本。 - **文件管理**:...

    Zblog博客标签静态化插件 v1.0.rar

    标签页静态化则是将博客的标签聚合页面也转换为静态文件,这样当用户访问某个标签的聚合页面时,可以快速加载,提供更好的用户体验。这个特性对于拥有丰富标签分类的博客来说,能够显著提升网站的整体性能。 安装此...

    Web网站-节日html静态页面优秀案例作品

    3. 标签结构:正确使用HTML语义化标签,如`<header>`, `<nav>`, `<main>`, `<article>`, `<footer>`等,提升可读性和可访问性。 总结,创建节日HTML静态页面需要结合HTML的结构特性,运用CSS和JavaScript实现视觉...

    PHP缓存与静态化——PHP缓存与静态化

    当用户访问已经静态化的页面时,Web服务器可以直接返回预先生成的HTML文件,无需再解析PHP脚本,执行数据库查询等复杂操作。这极大地减少了服务器响应时间,提升了用户体验,同时减轻了数据库和服务器CPU的压力。 *...

    java 页面静态化

    - **PageCache**:一些Web框架如Spring MVC提供了内置的缓存机制,可以用于实现页面静态化。 - **Nginx** 或 **Apache** 的URL重写功能:可以通过配置规则,将动态请求重定向到对应的静态HTML文件。 在进行页面静态...

Global site tag (gtag.js) - Google Analytics