当前位置: 首页 > 工具软件 > aiCache > 使用案例 >

aiCache缓存容量管理之路径缓存机制

巫马松
2023-12-01

  你的网站可能规模较大,拥有很多不同的Web文件(URLs)。那么在安装aiCache之后,随着用户不断发出各种请求,最终网站大部分的内容都会在它的缓存中。按照设计,aiCache将能被缓存的响应存储在RAM中,而非像一些硬件设备那样将缓存文件进行二次存储。
  aiCache将用户请求URL作为缓存响应进行答复的识别依据。一般而言,我们希望在URL中使用越多越好的信息作为缓存内容回复用户的依据。比如说,假设我们网站刚发布了一条爆炸性新闻,其URL是www.acmenews.com/stories.dll?articleid=12344。其中,“stories.dll”很可能就是一个用已经存在的一篇文章的ID提交过来的程序。
  如上所述,为了缓存这个文件,我们必须通过整个URL字符串来访问它。假设我们网站上有一千篇那样的热门文章,那么最终aiCache就会把一千份web文件良好地缓存下来以代替原始服务器对用户请求作出响应。这就是aiCache被设计的运作模式。
  现在,让我们再来看看一个不同的例子。在当今的网络世界中,一网站的某内容由其他站点链接而来是非常普遍的事。现在假设,很多其他网站都可链接到我们网站的主页。那么,为了使我们知道客户是通过哪些网站进入到我们站点的,这些网站通常会以某种形式提供引入编号“referrer ID”。
  例如,某一网站“www.acmebusinesspartner.com”可能通过“www.acmenews.com/breakingnews.html?partnerid=partner1”链接“www.acmenews.com/breakingnews.html”。“partnerid”参数绝对不会影响链接的网页的外观或内容,也不会对这些外观和内容进行处理。它仅仅只是写入日志文件,或用于客户端的Javascript代码分析。这样每天我们都可以知道到底有多少访客是从其它合作站点链接到我们网站的。一般地,我们可以使用上面整个字符串www.acmenews.com/breakingnews.html?partnerid=partner1作为缓存breakingnews.html回复客户的识别依据。假设,有几百个站点都对我们的网站提供链接,这样就会导致有几百个不同的URL指向同一份文件,使我们不得不让aiCache对一份完全一样的响应进行几百遍的缓存,这一份又一份额外的缓存副本,内容相同,增大了缓存压力,根本毫无必要。而且就使用情况而言,极大浪费了RAM的空间。
  这种情况在其它的例子中甚至还要更糟。比如说,一些网站为了操作,对静态网页或JavaScript文档随意添加字符串作为参数。然而,这个参数对web文档本身没有任何影响,根本就被web服务器忽视了。这样,如过我们再次使用整个URL字符串作为缓存web文档用以回复请求的识别依据,我们就会很可能需要缓存几千份同样内容的响应,加大缓存压力,降低服务器性能。想象一个网站,它有十万用户都将自己的用户ID作为参数加到静态HTML或JavaSript文档中。如果我们按照惯例,将每个响应的Web文件(哪怕这些文件一模一样)都作为一个单独的个体缓存入aiCache之中,我们就会很快用尽服务器上RAM的空间,更别提缓存响应进行答复的识别的依据还包含如此随意的字符串了,这些随意的字符串甚至会使响应变得不可缓存。
  幸好,aiCache可通过指定确定的URL,形成路径缓存机制来解决以上问题。换句话说,aiCache可以剔除掉这些URL整个的查询部分,作为回复用户请求某缓存web文件的识别依据。比如说,将www.acmenews.com/breakingnews.html?partnerid=partner1变为www.acmenews.com/breakingnews.html作为缓存此页后识别用户请求的依据,以后无论有多少站点链接此页,我们只在缓存一份web文件。由于客户依然可以对从其他网站提交的信息进行修改,并最终将其存储在aiCache日志文档中,服务器这端则可以粉碎不必要的日志文档,我们节省了大量的内存空间,而且还可以很好的处理客户的请求。
  节省内存资源很重要。正如上所说,通过下达一些指令,我们可以使aiCache减少需要缓存和管理的内容,我们可以通过将ignore_query细化成某一特定样式来配置这项功能,如:pattern html simple 10m ignore_query

 类似资料: