免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1720 | 回复: 1
打印 上一主题 下一主题

关于apache mod_cache 的问题请教:如果服务器根据请示头返回信息,要如何cache [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-08 12:29 |只看该作者 |倒序浏览
前端用apache 2.2 ,rewrite 到本机的应用服务器,应用服务器会根据客户端的accept-language来返回相应的语言版本的网页,如果不使用cache时可以正常工作,但如果启用了mod_cache后,比如一个中文用户请求了页面 http://abc.com/123.html ,这时apache返回中文页面就进行了cache,然后如果一个英文用户也请求了这个页面,但他得到的是cache中的中文页面,而不是希望的英文页面,请问如何在不变动应用服务器的情况下实现对不同的accept-language设置返回对应的语言页面?
我想在rewrite时把language信息做为一个参数加到rewrite后的URL中,这样在cache中就是两个不同的条目,但不清楚应该如何把客户端的首选语言设置加到rewrite后的URL中,请各位指教

论坛徽章:
0
2 [报告]
发表于 2007-03-08 15:49 |只看该作者
这个问题也解决了,还是通过在应用服务器上加了个Filter,对有多语言版本的网页返回时在Header中加上 Vary :accept-language, 这样cache 时就对不同的语言进行了cache, 现在还不清楚这种方法会不会有其它的问题,是看了 apache 手册中的这几句话后进行测试可行的方法:

易变的/协商的内容

当mod_cache接收到一个后端发出的、带有"Vary"头的应答的时候,它将尽可能智能的处理它。如果有机会,mod_cache将会检查之后进入的请求的"Vary"头属性,然后用正确的缓冲区内容为这个请求提供服务。

举个例子来说,接收到一个带有如下"Vary"头的应答:

Vary: negotiate,accept-language,accept-charset

mod_cache将只会使用与原始请求的accept-language和accept-charset头匹配的缓存内容来提供服务。
--------------------------------

看来上面的理解是错误的,今天又看了一下,看来如果两次url一样,而头不一样,cache中只有一种(url+headers)的的cache,如果这时请求了不同headers的同一url,也不会再cache了,当然也就不会命中

[ 本帖最后由 itsenser 于 2007-3-18 00:14 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP