`
java.jianan
  • 浏览: 18616 次
  • 性别: 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服务器上。这时就需要通过后台系统记录这些页面文件的部署位置,以便今后统一管理。同时业务组件的量也可能会比较多,特别是存在多版本的情况下,所以也需要把业务组件的配置情况记录到数据库中,便于统一管理。
分享到:
评论

相关推荐

    尚硅谷springboot视频(上)

    尚硅谷_SpringBoot_web开发-webjars&静态资源映射规则 尚硅谷_SpringBoot_web开发-引入thymeleaf 尚硅谷_SpringBoot_web开发-thymeleaf语法 尚硅谷_SpringBoot_web开发-SpringMVC自动配置原理 尚硅谷_SpringBoot_web...

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

    在实际的应用中,用户使用浏览器浏览Web应用,都是在向Web服务器发送请求。Web服务器根据用户的请求使用以不同方式进行响应。...若对于一个大型的网站,用户...这样,用户在访问时就直接访问静态HTML网页,不执行PHP脚本。

    SpringBoot学习视频

    尚硅谷_SpringBoot_web开发-webjars&静态资源映射规则 尚硅谷_SpringBoot_web开发-引入thymeleaf 尚硅谷_SpringBoot_web开发-thymeleaf语法 尚硅谷_SpringBoot_web开发-SpringMVC自动配置原理 尚硅谷_SpringBoot_web...

    尚硅谷Spring boot核心技术篇(上)

    27、尚硅谷_SpringBoot_日志-切换日志框架 28、尚硅谷_SpringBoot_web开发-简介 29、尚硅谷_SpringBoot_web开发-webjars&静态资源映射规则 30、尚硅谷_SpringBoot_web开发-引入thymeleaf 31、尚硅谷_SpringBoot_web...

    128元尚硅谷Java视频教程_SpringBoot视频教程(上)核心技术篇

    29、尚硅谷_SpringBoot_web开发-webjars&静态资源映射规则 30、尚硅谷_SpringBoot_web开发-引入thymeleaf 31、尚硅谷_SpringBoot_web开发-thymeleaf语法 32、尚硅谷_SpringBoot_web开发-SpringMVC自动配置原理 ...

    html静态页面,实现跨域访问

    请用google浏览器打开,页面百分比缩小到百分之三十再访问。 1、 请在服务器上部署附件war 2、 将【两个工程.zip】压缩包中的webChart.war和jdbc2json.war上传至apache-tomcat-8.0.33/webapps下 3、 启动tomcat,~/...

    Java SpringBoot课件+源码视频教程

    29、_SpringBoot_web开发-webjars&静态资源映射规则 30、_SpringBoot_web开发-引入thymeleaf 5 g- Q" y) P7 Q7 O 31、_SpringBoot_web开发-thymeleaf语法 . V# ?; k. ^2 F0 Y! L9 a4 r: w% t; r 32、_SpringBoot_...

    jsp伪静态化

    访问路径: http://localhost:8080/jsp-rewrite/user/welcome.html url重新文件: /jsp-rewrite/WebRoot/WEB-INF/urlrewrite.xml sql文件: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT ...

    PHP页面静态化——纯静态与伪静态用法详解

     当用户访问一个不经常更新的Web页面,PHP接到指示对php脚本文件进行解析,从数据库查询到该页面所需要的数据,然后对页面模板进行渲染,最后将一个成品页面展示给用户。单次请求对于服务器来说非常简单,处理起来...

    wordpress全站静态化插件.zip

    wordpress一键全站生成HTML文件,实现全站静态缓存访问,安全快速-中文版。

    WebSpider 网页抓取 v5.1

    对抓取到页面内容进行解析,得到结构化的信息,比如:新闻标题、作者、来源、正文等。支持列表页的自动翻页抓取,支持正文页多页合并,支持图片、文件的抓取,可以抓取静态网页,也可以抓取带参数的动态网页,功能...

    构建高性能WEB站点(完整版)

    包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、...

    论文研究-基于Lamp的页面静态化技术的研究与实现 .pdf

    基于Lamp的页面静态化技术的研究与实现,伊文杰,马跃,大型网站出于业务的需求,要求Web服务器做出快速的响应,然而当服务器遇到上亿级的并发访问时,服务器往往呈现出请求严重超时,有��

    能放在网站任何地方(含静态页面)的站点计数器Handler类

    现在有不少人在做网站静态化,然后如何实现记录的点击数动态更新又成了一个麻烦事,直接使用本HttpHandler,可以在网站的任意地方给任意记录增加并显示点击数。 在Web.config里面做如下配置: <system.web> *" ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    9.2.4 访问静态方法与属性 9.2.5 访问数组 9.2.6 访问List、Set、M印集合 9.2.7 投影与选择 9.3 Struts2的标签库 9.3.1 数据标签的应用 9.3.2 控制标签的应用 9.3.3 表单标签的应用 …… 第10章 邂逅数据库持久化...

    DTools(Dog Tools) - 小工具集,无数据库,纯NodeJS环境,本地可静态运行

    - 3、系统可网络部署与本地静态访问,有网与无网都可使用,满足各场景下使用 - 4、对数据可提供覆盖与非覆盖两种模式,原有数据可保持;各功能之间提供管道操作,达到功能连续 * 具体功能如下: * JSON格式化 * JS/HTML...

    go语言web编程

    5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 6.1 session和cookie 6.2 ...

    go web编程

    1.1.2 Go与模块化Web应用 4 1.1.3 Go与可维护的Web应用 5 1.1.4 Go与高性能Web应用 5 1.2 Web应用的工作原理 6 1.3 HTTP简介 7 1.4 Web应用的诞生 8 1.5 HTTP请求 9 1.5.1 请求方法 10 ...

    基于springboot实现OA自动化办公系统附数据库文件+文档说明

    Web开发的范围可以从开发简单的纯文本单个静态页面到复杂的基于WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。 Internet上供外界访问的Web资源分为: 静态web资源(如html 页面):...

Global site tag (gtag.js) - Google Analytics