跳到主要内容

dynamic_content_cache

动态内容是动态生成的,其代价巨大,我们可以考虑将其缓存起来,下次可以直接使用。

页面缓存

页面缓存:将Web网站最后输出的HTML页面全部缓存起来。

需要注意的问题是:

  • 我们把动态生成的html保存到本地磁盘,不同的URL对应的文件也是不一样,它们有一一映射的关系以进行查找;
  • 当文件过多,服务器会花费太多的时间在目录下查找文件。可以使用目录分级使得每个文件夹下的文件数量在一定数量;
  • 动态页面的目的就是提供动态内容。所以要有过期检查;
  • 我们可以使用其他的缓存工具来缓存,譬如 APC,。使用的是内存缓存。
  • 我们可以使用专门的缓存服务器,使用memcached 或者 redis;
  • 缓存|失效策略要考虑命中率;

局部缓存

页面局部修改而导致整个页面重新生成有点亏,我们可以对该部分的进行非缓存,思路至少有:

  • 服务器端将其他地方保存,动态部分临时加进去;
  • 动态部分通过ajax进行请求

更新策略

  • 数据更新是生成缓存:要是更新频繁会对服务器造成压力,可以所有一个任务队列,更新后加入队列,队列写满或者超时了就更新;
  • 定时更新:通过定时任务定期的生成。

两者各有长短。

More

其实上面的缓存策略还是要先访问代码。我们可以让其直接访问静态文件,要是没有再重定向,我觉得是有可行性的: 在nginx中使用rewrite指令。