动态页面静态化

可以把动态的页面模拟为静态页面,既可以拥有动态页面的灵活性、维护方便 又可以拥有静态页面的性能

开发语言:C#/.NET

操作系统:Windows

产品主页:https://github.com/me15000/PC

此程序 目前只支持windows+.net 平台
windows 2003 + .net 4.0 +iis 6

windows 2008 + .net 4.0 +iis 7.x

windows 2008 + .net 4.5+iis 7.x

windows 2008 + .net 4.5.1 +iis 7.x

等以上平台

你的网站程序可以是 php 可以是 asp 也可以是asp.net

无论你页面写得有多么烂,PageCache 都可以给你的页面加速到 秒开的性能

程序不断升级改进中

通过不断的测试 日志分析 用户反馈,PageCache 已经发展到第五个版本, 目前已经稳定运行在生产环境中。

  • PageCache 新特性
  • PageCache 简要说明
  • PageCache 可以带来的好处
  • PageCache 详细说明
  • PageCache 原理
  • PageCache 怎么使用

PageCache 新特性

  • 新增存储队列,把要存储到磁盘上的内容先写入内存缓冲区,到达一定的数量之后一次性写入磁盘,减少磁盘IO
  • 新增读取队列,把最新从磁盘中读取的内容加入内存缓冲区,减少磁盘IO
  • 新增SQLite 存储器,使用本地文件和磁盘来保存缓存内容,减少网络开销和维护成本,适合小型项目
  • 程序结构优化

PageCache 简要说明

顾名思义 PageCache 是用来缓存网页的 ,如 php 页面、 html、 asp页面、asp.net 页面等等,也可以缓存图片、css、js 等

PageCache可以带来的好处

  • PageCache 可以在不修改源代码的情况下,将动态页面模拟为静态页面,提升网页打开速度,增强用户体验
  • PageCache 支持gzip压缩和分片,将源页面压缩为gzip 发送给用户,提升网页打开速度,增强用户体验
  • PageCache 可以自动计算出 用户频繁访问的页面,将此页面放入内存,提升网页打开速度
  • PageCache 有很强的可伸缩性,可以创建多个节点,多个存储来进一步提升网站性能 ,支持负载均衡
  • 使用PageCache 可以让注重网站性能的用户,不再为性能而做过多的工作,从而提升工作效率,降低产品开发周期,让开发者更关注需求本身
  • 如果网站使用 dnspod 解析多台服务器,架构多台PageCache服务器,基本上可以做到类似 CDN 的页面加速功能,为项目节约成本

PageCache详细说明

场景:

网站访问量比较大的时候,一个问题就凸显出来,网站的性能(网站的响应速度)

为了解决性能问题,传统解决方案:

  • 生成静态HTML
  • 使用Redis or memcached 等其它缓存软件

【生成静态HTML】优点

  • 打开速度快,不访问数据库,所以很多网站使用生成静态HTML 来提升性能, 在网站规模比较小改动幅度比较小的情况下,这种方法还不错。
  • 网站数据库在挂了的情况下 静态HTML 仍然可以对外访问

【生成静态HTML】缺点

  • 因为如果网站要生成静态HTML,网站就要有写入权限,有写入权限对网站来说是很不安全的
  • 生成静态HTML 在程序实现上有诸多不便,严重影响开发效率,耽误产品开发进度
  • 网站频繁修改、网站数据量上十万 二十万的情况下、网站有成千上万上几十万上百万个页面构成,生成静态HTML 非常耗时麻烦
  • 网站迁移备份由于目录中静态HTML 太多,需要打包网络传输过去 这个过程是很麻烦很漫长的

【使用 Redis or memcached】

在使用 Redis 或者 memcached 这些软件的时候

程序上要多一层,会增加开发周期,会增加维护成本

因为Redis 或 memcached 和 程序的耦合性比较大

会导致程序员的工作量增加

Redis 或 memcached 在项目中的角色:


程序第一次读数据的时候 ,首先要从数据库中取出数据,然后把数据存储到 Redis 或 memcached 中,并设置过期时间


第二次再去读数据的时候,就直接从 memcached 或 redis 中读数据,不用直接再从数据库中读数据


当memcached 或 redis 中的数据过期的时候,再重复上述的步骤

更好的解决方案【PageCache】

  • PageCache 尽可能模拟到【静态HTML】的性能,甚至超越【静态HTML】的性能的情况下,保留静态HTML的优点,解决静态HTML的缺点
  • PageCache 拥有多种存储引擎,可以使用传统数据库 mysql、 mssql、 oracle、 本地磁盘等,作为缓存存储引擎,也可以使用 redis、 mongodb、 memcached 等作为存储引擎
  • PageCache 有良好的存储引擎扩展机制,可以指定规则使用多种不同的存储引擎 解决性能问题
  • PageCache 独立于应用程序,降低程序耦合性,程序员不用使用 redis memcached 等中间件,更关注程序逻辑提升工作效率

PageCache原理

PageCache 将动态页面执行的结果保存了起来,并指定过期时间,到了过期时间之后,再重新获得动态页面的结果,在缓存没有过期之前,用户访问的都是这个缓存的结果,这样就可以提升网站的性能,不用再去手工生成页面

PageCache可以设定使用内存缓存,自动计算出哪些缓存被频繁访问,然后把这个缓存 放入到内存中,这样可以减少磁盘IO,从而更进一步提升性能

PageCache 通过Http形式获得动态页面的执行结果,这样意味着,动态页面可以放在本地服务器,也可以放在远程,也可以架构多台动态页面服务器,提升性能

PageCache 并不直接把数据放到存储引擎里面,而是缓存到一个内存列表中,当列表中元素数量达到设定值之后,再写入存储引擎中,从而提升存储引擎的性能

PageCache怎么使用

PageCache 基于.net 开发,所以 PageCache 需要依赖微软 .net framework

windows 2008 + iis 7.x 配置说明

PageCache要用到的文件

  • PageCache.dll 主程序
  • PageCache.Store.xxxxxxx.dll 存储器程序
  • PageCache.config 配置文件
  • Web.config 配置文件

存储器可以有多种选择,也可以定制、默认PageCache自带的存储器有

  • MySql存储器(PageCache.Store.MySql.dll)
  • SQLServer存储器(PageCache.Store.SQLServer.dll)
  • MongoDB存储器(PageCache.Store.MongoDB.dll)

存储器实现了接口 PageCache.Store.IStore 接口,用户需要定制存储器可以实现这个接口,

用户可以根据自己的需要来选择需要的存储器

详细配置可以参考程序目录 PageCacheWeb 中的配置

转载:http://www.topthink.com/product/3087.html​

分享到:

7 条评论

:wink: :twisted: :roll: :oops: :evil: :?: :-| :-P :-D :) :( :!: 8)
昵称
  1. lily

    :oops: 有用!

  2. yiluyingxiao

    提前祝您新年快乐。
    乙未年(羊)冬月十九 2015-12-29

  3. 好文章

    支持一下 赞一个

  4. 优美散文摘抄

    优美散文摘抄www.shanjuetang.cn

  5. 东方新星

    这个学习学习

  6. 漫道

    针对静态化目前还不了解,不过也会找些代码

  7. Asiaidc.net

    看博主的介绍这款产品还是很不错嘀,可惜没有win系统环境,要不非亲测一下不可.