页面缓存
文件缓存-----------------
1). 当缓存文件过W的时候,CPU花在遍历目录上的时间非同寻常,甚至使用率会达到100%?
解决办法是1使用目录分级,2使用支持hash等加速目录遍历的文件系统,如XFS、reiserfs
2). 过期检查策略:
1.可以把缓存过期时间相关信息序列化后存储到缓存文件的头部
2.通过PHP stat()函数来直接判断文件更新时间
3). 在加载缓存之前,尽量不要加载无关的额外的文件
其实有一个解决方案:脚本加速器可以将脚本代码进行缓存和优化
加载文件增加磁盘I/O的开销,而初始化对象则增加了CPU和内存交互开销也增加了脚本解释器的开销
4. 当用文件缓存的时候,尽量不要把数据库也放到这个磁盘上,大量的磁盘I/O交互会使得磁盘延迟,磁盘负载瓶颈
把缓存放到内存中-----------
1.APC :使用的是本机内存缓存
2.XCache
独立的缓存服务器------------
如memcached 通过TCP socket 将缓存存储到多台服务器,也是以key的形式存储,维护key的过期时间,一旦过期,服务器会自动删除缓存
对于使用的基于内存的缓存方法,当要存储的缓存有10W个,每个100KB,就相当于1GB的内存占有,如果想较长时间的存储,那么内存就是一个瓶颈。
解决方法是使用memcached基于分布式缓存无限扩展服务器策略来解决这个瓶颈。
----
Web服务器特别是应用服务器内存是非常宝贵的,它需要满足HTTP进程及脚本解释器的大量开销。无法拿出大量的空间来存放HTML缓存。
有效期取值-----
缓存管理
局部无缓存
静态化内容
1. 静态页面要发挥足够大的效果,需要购买更多的独享带宽如1G,为服务器安装千兆网卡,前兆交换机
2. 更新策略:
a.在数据更新时重新生成静态化内容
b.定时重新生成静态化内容
对于a种策略:当工作人员大量更新网站的时候,会引发大量网页的静态化,降低服务器的相应,为此可以引入延迟更新机制,讲更新机制放入队列,一旦队列写满或者达到超时时间,便一次性将他们更新到磁盘,可以理解为叫‘静态缓冲区’
对于b种策略:一般采用定时任务,如对首页的热门新闻定时更新
局部静态化
静态化网页可以不必整页更新,它可以通过SSI(服务端包含)技术实现各个局部页面的独立更新,这样便大大节省了重建整个网页时的计算开销和磁盘I/O开销,甚至包括分发时的网络I/O开销。
APCHE 里可以看到
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
关于SSI我会写一篇文章介绍,简单来说是引入这样的代码
<body>
dddd
<!--#include file="t.php"-->
</body>
配置http://say0507.iteye.com/blog/989380
上面整理的有些乱,说的是这些:
1. 重复的开销
2. 缓存与速度
3. 页面缓存
4. 局部无缓存
5. 静态化内容