反向代理缓存/分段页面缓存

ESIEdge Side Includes)----分段页面缓存的核心思想是将一些不具有动态化的html缓存起来,对随着用户或者应用发生某些动态的页面片段通过访问web服务完成页面展示。

说道这里,你肯定知道在传统的web服务器前面有一个层专门对静态的html进缓存。这种架构就是我们说的 反向代理缓存。至于为什么叫反向代理,相信这里你也应该已经一窥一二了。

通常ESI有2中实现方式:Velocity自定义实现和第三方提供的服务varnish/Squid

Velocity的自定义实现ESI的方式参考如下:

http://www.cnblogs.com/yuyijq/archive/2011/05/07/fragment_cache_one.html

关于varnish的ESI参考如下

http://www.cnblogs.com/yuyijq/archive/2011/05/08/fragment_cache_two.html

在通过 Nginx 反向代理时,如果发现数据返回不全的问题,通常是由于以下几个常见原因导致的。我们可以逐一排查并解决问题。 --- ### 一、可能的原因分析 #### 1. **缓冲区设置不足** Nginx 默认会对后端服务器返回的数据进行缓存,并将数据分段传递给客户端。若单次响应内容较大(例如文件下载),但缓冲区容量不足以容纳完整的响应,则可能出现“数据返回不全”的现象。 解决办法:增大缓冲区配置。 - 指令:`proxy_buffer_size` - 示例: ```nginx location / { proxy_buffer_size 64k; # 增加单个缓冲区大小至64K } ``` #### 2. **缓冲区内存限制过多** 除了单个缓冲区外,还可能存在内存中分配的缓冲区数量不足的情况。当响应内容超出所有可用缓冲区容量时,多余部分会被写入磁盘临时文件,可能导致性能下降甚至数据丢失。 解决办法:增加缓冲区总数。 - 指令:`proxy_buffers` - 示例: ```nginx location / { proxy_buffers 16 32k; # 设置总共16个32K的缓冲区 } ``` #### 3. **临时文件存储受限** 对于非常大的响应结果,Nginx 需要将其保存到磁盘上作为临时文件。此时如果没有正确地设定临时文件的最大尺寸或路径规则,也可能引发异常情况。 解决方案:调整临时文件管理参数。 - 指令:`proxy_max_temp_file_size`, `proxy_temp_path` - 示例: ```nginx http { proxy_temp_path /var/cache/nginx/proxy_temp; # 定义存放位置 } location / { proxy_max_temp_file_size 1g; # 最大支持1GB大小的临时文件 } ``` #### 4. **连接超时设置不合理** 假如用户的网络环境较差或者远距离访问存在延迟较高情形下,那么原本正常耗时不长的操作现在变得极为缓慢,一旦超过了预设时限就会终止传输过程进而造成部分内容缺失问题的发生。 应对措施:延长读取超时时间。 - 相关指令包括但不限于下面几项: - `proxy_read_timeout`: 控制等待下游回复所需最长时间; - `send_timeout`: 决定每次写回客户机之间所允许停留多久才算失败。 - 实际运用场景举例来说像这样设置较为合适: ```nginx location /slow-api/ { send_timeout 300s; proxy_read_timeout 300s; # 给予足够充裕的时间完成任务 } ``` #### 5. **压缩功能干扰** 有时为了提高页面加载速度启用了gzip之类的压缩算法之后,在特定条件下反而容易引起乱码或者是信息长度不对等问题 ,因此也应当考虑到这方面的影响因素是否存在冲突之处并且妥善加以规避掉才行啊! 修正策略:明确指定哪些资源可以被压缩以及相应的等级标准等等细节事项 。比如这里给出一个参考模板如下所示 : ```nginx gzip on ; gzip_min_length 1k ; // 设立最小压缩单位为一千字节以上才开始实施此机制动作起来 gzip_types text/plain application/javascript image/svg+xml ... etc...; // 明列出来的mime-types才是符合条件者才会受到该项技术加持效果作用覆盖范围内去应用哦~ ``` --- ### 二、总结与建议 综上所述,“通过 nginx 反向代理, 数据返回不全”这一状况往往是由上述几种常见的原因之一或是组合形式共同造成的。我们需要仔细检查自己的实际部署环境中涉及到的所有相关联配置项目有没有按照最佳实践规范来进行适当合理的定制化修改适应自身需求特点即可成功化解此类难题啦!记得每一次更改完新的改动之后都需要重新测试一遍确认最终成果准确无误再投入生产使用当中哟~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值