`
txf2004
  • 浏览: 6866949 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

WEB应用的缓存兼容性设计

阅读更多

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层以上代理的几率也非常小。

分享到:
评论

相关推荐

    高速web缓存组件 memcached全面剖析 中文版

    一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 如今,越来越多的Web应用程序开始使用memcached这个高速的缓存服务器软件。然而,memcached的基础知识远...

    web开发详细设计文档

    3.1 兼容性 10 3.2 系统架构 10 3.2.1 逻辑架构 10 3.2.2 Web 应用的包设计 12 3.3 组件设计 - J2EE WEB APPLICATION 13 3.3.1 MVC 框架 – Struts 13 3.3.2 日志 14 3.3.3 BAPI代理结构 15 3.3.4 销售商用户信息...

    AspMvc框架 Web快速应用开发

    AspMvc是一个快速、简单的面向对象的轻量级Asp开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。 借鉴了国内外很多优秀的(Java Ssh/Net NetMvc3.5 ThinkPhp)框架和模式,使用面向对象的开发结构和MVC...

    HTML5用户指南

     对遗留浏览器的向后兼容  样式化新表单字段和错误消息  覆盖浏览器默认  使用 diy验证  避免验证  小结 第4章 视频和音频  本地多媒体:为什么、是什么、如何做  编码解码器  滚动定制控件  多媒体可...

    PWA:渐进式Web应用程序

    经典的Hello World程序作为渐进式Web应用程序 这是什么 一个简单的PWA演示,显示文本“ Hello,World!” 利用应用清单,服务人员和缓存。 该演示使用普通HTML,CSS和Javascript(ES6)编写。 它没有依赖性。 我还...

    微软ASP.NET入门教程

    微软ASP.NET入门教程 .DOC文档(解压后13M,可直接打印,共300页) ...语言兼容性 COM 互操作性 事务 示例应用程序 个性化入口 电子商务店面 类浏览器应用程序 IBuySpy.com 比特整理( www.bitceo.com )

    基于tornado实现的小型推荐系统的web应用.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    ASP.NET4高级程序设计(第4版) 3/3

    3.1.6 XHTML兼容性 66 3.1.7 客户端控件ID 71 3.2 Web窗体处理阶段 73 3.2.1 页面框架初始化 74 3.2.2 用户代码初始化 74 3.2.3 验证 74 3.2.4 事件处理 75 3.2.5 自动数据绑定 75 3.2.6 清除 76 ...

    php程序设计课程大作业——基于PHP、MySQL的web端借还书系统.zip

    PHP(全称:...总的来说,PHP作为一种成熟的Web开发语言,凭借其易用性、灵活性、丰富的库与框架支持、强大的社区生态以及持续的性能优化,成为了构建各类动态网站、Web应用及API服务的理想选择。

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久...

    HTML5程序设计(第2版).[荷]Peter Lubbers(带详细书签).pdf

    1.4.1 兼容性和存在即合理 3 1.4.2 效率和用户优先 4 1.4.3 化繁为简 5 1.4.4 通用访问 5 1.5 无插件范式 5 1.6 HTML5的新功能 8 1.6.1 新的DOCTYPE和字符集 8 1.6.2 新元素和旧元素 9 1.6.3 语义化标记 10...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    3.1.6 XHTML兼容性 3.1.7 客户端控件ID 3.2 Web窗体处理阶段 3.2.1 页面框架初始化 3.2.2 用户代码初始化 3.2.3 验证 3.2.4 事件处理 3.2.5 自动数据绑定 3.2.6 清除 3.2.7 页面流示例 3.3 ...

    Web客户端模似控件集-Ucren

    Ucren 是一套 web 客户端模似控件集,包括各种常见的和不常见的控件,具有稳定高效、兼容性好⑻寤∷俣瓤斓扔诺悖?Rich Internet Application 表现层的理想解决方案。 Ucren 的特色 超迷你 框架的体积是影响...

    常用J2EE应用服务器简介.docx

    WebLogic Server凭借其杰出的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。 WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何特地的硬件或操作系统支持。网页群集...

    Dart开发Android应用Sky.zip

    协议的,当然也通过浏览器的兼容性实现了自己的兼容性部署,是的任何人都能运行最新版的应用。除此之外,URLs 也是 Dart 的基础层之一。因此有人认为,Sky 应用完全依赖网络,没有网络的情况下应用便不能运行,...

    AntiRedis:Web 应用程序的分布式缓存系统

    JSHint,一个 JavaScript 静态代码分析工具[••••••• ] JSHint 是一个社区驱动的工具,用于检测 JavaScript 代码中的错误和潜在问题。... 破坏 JSHint 向后兼容性。 P2:有些东西没有被正确解析。 P3:一旦 P2

    hello-pwa:经典的Hello World程序作为渐进式Web应用程序

    您好PWA 经典的Hello World程序作为渐进式Web应用程序这是什么一个简单的PWA演示,显示文本“ Hello,World!” 利用应用清单,服务人员和缓存。 该演示使用普通HTML,CSS和Javascript(ES6)编写。 它没有依赖性。 ...

Global site tag (gtag.js) - Google Analytics