关闭

WEB应用的缓存兼容性设计

2191人阅读 评论(0) 收藏 举报

http://www.chedong.com/tech/cache.html#compatible

WEB应用的缓存兼容性设计


经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTD头信息中,增加了HTTP_X_FORWARDED_????信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址:

下面是2个例子,用于说明缓存兼容性应用的设计原则:

    '对于一个需要服务器名的地址的ASP应用:不要直接引用HTTP_HOST/SERVER_NAME,判断一下是否有HTTP_X_FORWARDED_SERVER
function getHostName ()
dim hostName as String = ""
hostName = Request.ServerVariables("HTTP_HOST")
if not isDBNull(Request.ServerVariables("HTTP_X_FORWARDED_HOST")) then
if len(trim(Request.ServerVariables("HTTP_X_FORWARDED_HOST"))) > 0 then
hostName = Request.ServerVariables("HTTP_X_FORWARDED_HOST")
end if
end if
return hostNmae
end function

//对于一个需要记录客户端IP的PHP应用:不要直接引用REMOTE_ADDR,而是要使用HTTP_X_FORWARDED_FOR,
function getUserIP (){
$user_ip = $_SERVER["REMOTE_ADDR"];
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
$user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
}


注意:HTTP_X_FORWARDED_FOR如果经过了多个中间代理服务器,有何能是逗号分割的多个地址,
比如:200.28.7.155,200.10.225.77 unknown,219.101.137.3
因此在很多旧的数据库设计中(比如BBS)往往用来记录客户端地址的字段被设置成20个字节就显得过小了。

经常见到类似以下的错误信息:

Microsoft JET Database Engine 错误 '80040e57'

字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。

/inc/char.asp,行236

原因就是在设计客户端访问地址时,相关用户IP字段大小最好要设计到50个字节以上,当然经过3层以上代理的几率也非常小。

0
0
查看评论

讲解WEB应用的缓存兼容性设计

在众多学习中,文章也许不起眼,但是重要的下面我们就来讲解一下。excel教学 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTD头信息中,增加了HTTP_X_FORWARDED_?...
  • zhuqihe02
  • zhuqihe02
  • 2015-11-20 20:16
  • 182

通过分布式设计及文件级数据缓存打造千万级别WEB应用

http://os.51cto.com/art/201203/321067.htm2011年京东商城碰到了严重的流量相关的性能瓶颈,51CTO也做了专门的报道,我有幸在6年前主持开发过日流量千万级别的系统,所以也在微博发表了一下自己的观点(具体详见 http://os.51cto.com/art/2...
  • lulidaitian
  • lulidaitian
  • 2016-06-19 16:47
  • 822

程序设计的兼容性问题杂谈

程序的实现,经常会随着时间的推移不断的变化。 不断变化的实现,经常又需要兼容以前的实现。 本文试图在这方面做一些探讨。 由于在下水平相当有限,不当之处,在所难免。还望大家多多指教。 所谓兼容,指的是新版本的软件能够原封不动的接纳旧版本的配置文件、命令行参数、程序间交互消息、函...
  • crazycoder8848
  • crazycoder8848
  • 2016-12-14 00:08
  • 435

Web系统中缓存的应用

一、什么是缓存           缓存就是数据交换的缓冲区,在web系统中,从浏览器到服务器,从服务器到数据库,从服务器到资源服务器,每一步都可以设置缓存来避免直接的I/O操作,从而提高网站性能。 二、什么...
  • wsdydmw
  • wsdydmw
  • 2015-07-29 18:35
  • 1152

大型高并发高负载web应用系统架构-缓存架构策略

目前在网站的架构构成中普遍使用到缓存来提供WEB应用的性能,由于网站规模的不同,分别存在如下几种类型的缓存架构。(1)单机缓存(2)简单分布式缓存(3)使用复制方式的缓存集群(4)使用散列方式的缓存集群(5)高性能高、可靠的缓存集群下面对于上述几种缓存策略的实际应用的适用情况以及优缺点进行详细分析,...
  • zhangzhaokun
  • zhangzhaokun
  • 2009-10-15 20:45
  • 5484

兼容性设计

<br /><br />兼容性的意义<br />产品兼容性指产品与其他产品具有类似的操作 , 能够处理其他产品产生的数据 , 处理结果能够被其他产品继续处理 . 从兼容的产品角度包括与竞争产品兼容 , 与相关产品兼容 , 与以前产品兼容 , ...
  • huxw2000
  • huxw2000
  • 2011-04-27 12:53
  • 700

开发中的缓存设计

缓存在互联网的项目中扮演这越来越重要的作用了,用于高并发,大流量的场景下效果尤为明显。 所以就需要注意缓存和数据库之间的数据一致性问题。缓存的淘汰和更新等一系列问题。 场景需求 缓存是一种提高系统读性能的常见手段,所以对于一些读多写少的场景下会常用缓存进行优化。例如在账户的余额需求上,...
  • mggwct
  • mggwct
  • 2017-03-04 13:23
  • 547

缓存架构设计二三事

本文主要讨论这么几个问题: 1. “缓存与数据库”需求缘起 2. “淘汰缓存”还是“更新缓存” 3. 缓存和数据库的操作时序 4. 缓存和数据库架构简析
  • justinsause
  • justinsause
  • 2016-04-05 11:52
  • 3866

设计一套缓存框架需要关注的要素

最近关注了一些缓存框架的特性和实现,包括OSCache、JCS、Ehcache、Memcached等等,公司的两个缓存框架,以及一个标准JSR 107(JCache),发现一些诸多类同的方面。如果你不够熟悉以上,不妨先看看这两篇文章:《OSCache框架源码解析》和《Ehcache详细解读》,再看下...
  • sinat_29581293
  • sinat_29581293
  • 2016-07-19 16:24
  • 789

WEB应用中间层的分层架构设计总结

转自:点击打开链接http://blog.sina.com.cn/s/blog_4c925dca0101jb4q.html 阿堂管理Pos项目团队一年半多时间,由于公司业务的调整,近期又调回到移动项目团队管理了。在Pos团队时一直比较忙,这段时间在忙于带队开发基于微信公众平台的公司移动业务...
  • lein_wang
  • lein_wang
  • 2017-07-28 15:51
  • 305
    个人资料
    • 访问:308682次
    • 积分:1442
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条
    最新评论