使用frisby 进行post的表单信息的提交,以及nginx缓存的命中
相关名称
post form ,$request_uri nginx-cache
frisby测试,在客户端,进行post方式提交表单数据,客户端的nginx缓存信息无效
客户端也有nginx服务
使用frisby 进行post的表单信息的提交:
frisby的第一种尝试
//userMac 是 String 用户终端Mac
//sn 否 String wifi设备SN
//adTypeId 是 Integer 广告类别Id '1':'展示类广告' '2':'视频贴片类广告'
//adPositionId 是 Integer 广告位id '1': '首页插屏' '2': '首页banner' '3': '首页底部浮层' '4': '频道页banner' '5': '自弹页全屏' '6': '自弹页半屏' '7': '外网劫持' '8': '首页红包浮层' '9': '自弹页红包浮层'
//channelId 否 Integer 频道Id '1': '电影' '2': '综艺' '3': '在线游戏' '4': '游戏下载'
function getADCachePush(sn, adTypeId, adPositionId, channelId) {let form = frisby.formData();form.append("sn", sn)form.append("adTypeId", adTypeId)form.append("adPositionId", adPositionId)form.append("channelId", channelId)//console.log("user-agent", uastr)// adCacheServer : http://....console.log("form", form)return new Promise(resolve => {return frisby.post(adCacheServer, {body: form}).expect("status", 200).then(res => {//console.log(res)// console.log(res.headers)//console.log("adPushResult", res.json);resolve(res);})})
}
多次提交时,期望的是res.headers的 'nginx-cache': [ 'HIT' ]
结果却是'nginx-cache': [ 'MISS' ]
多次调查,发现,使用上面的方式,form信息,会被frisby字段添加了 下面的信息125081902639415250405831,而且,这一串数字每次请求都不相同。详细信息如下所示:
form data FormData {_overheadLength: 427,_valueLength: 2,_valuesToMeasure: [],writable: false,readable: true,dataSize: 0,maxDataSize: 2097152,pauseStreams: true,_released: false,_streams:[ '----------------------------125081902639415250405831\r\nContent-Disposition: form-data; name="sn"\r\n\r\n','',[Function: bound ],'----------------------------125081902639415250405831\r\nContent-Disposition: form-data; name="adTypeId"\r\n\r\n','1',[Function: bound ],'----------------------------125081902639415250405831\r\nContent-Disposition: form-data; name="adPositionId"\r\n\r\n','1',[Function: bound ],'----------------------------125081902639415250405831\r\nContent-Disposition: form-data; name="channelId"\r\n\r\n','',[Function: bound ] ],_currentStream: null,_boundary: '--------------------------125081902639415250405831' }
重新修改表单信息的提交方式,问题解决。
新代码如下:
//sn 否 String wifi设备SN
//adTypeId 是 Integer 广告类别Id '1':'展示类广告' '2':'视频贴片类广告'
//adPositionId 是 Integer 广告位id '1': '首页插屏' '2': '首页banner' '3': '首页底部浮层' '4': '频道页banner' '5': '自弹页全屏' '6': '自弹页半屏' '7': '外网劫持' '8': '首页红包浮层' '9': '自弹页红包浮层'
//channelId 否 Integer 频道Id '1': '电影' '2': '综艺' '3': '在线游戏' '4': '游戏下载'
function getADCachePush(sn, adTypeId, adPositionId, channelId) {return new Promise(resolve => {return frisby.post(adCacheServer, {body: `sn=${sn}&adTypeId=${adTypeId}&adPositionId=${adPositionId}&channelId=${channelId}`}).expect("status", 200).then(res => {//console.log(res)console.log("res.headers", res.headers)//console.log("adPushResult", res.json);resolve(res);})})
}// 测试示例:
fit("simple test",function(done){getADCachePush("", 1, 1, "").then((res) => {console.log("getADCachePush (1)", res.json);setTimeout(() => {getADCachePush("", 1, 1, "").then((res) => {console.log("getADCachePush (2)", res.json);done();})}, 1000);})})
命中结果:
onsole.log Spec\cpsPlanSpec.js:1922res.headers Headers {_headers:{ server: [ 'nginx/1.7.10' ],date: [ 'Wed, 14 Mar 2018 10:04:36 GMT' ],'content-type': [ 'application/json;charset=UTF-8' ],'transfer-encoding': [ 'chunked' ],connection: [ 'close' ],'access-control-allow-origin': [ '*' ],'access-control-allow-methods': [ '*' ],'access-control-max-age': [ '100' ],'access-control-allow-headers': [ 'Content-Type' ],'access-control-allow-credentials': [ 'false' ],pragma: [ 'no-cache' ],expires: [ 'Thu, 01 Jan 1970 00:00:00 GMT' ],'cache-control': [ 'no-cache, no-store' ],'nginx-cache': [ 'HIT' ] } }
附1, nginx中的配置:
server {location ~* /media-ad/ {default_type text/html;rewrite ^/media-ad/(.*)/(.*) /$1/api/advertise/cache break;proxy_pass https://139.219.99.153;proxy_cache media_cache;proxy_cache_valid 200 1h;proxy_cache_methods POST;proxy_cache_key "$request_uri|$request_body";proxy_ignore_client_abort on;proxy_cache_lock on;proxy_cache_lock_timeout 60s;add_header Nginx-Cache "$upstream_cache_status";}}
附2,nginx中有几个关于uri的变量的区别
--【引用地址】https://www.cnblogs.com/JohnABC/p/6182826.html
--在nginx中有几个关于uri的变量,包括$uri、$request_uri、$document_uri,下面看一下他们的区别 :
--$request_uri: /stat.php?id=1585378&web_id=1585378
--$uri /stat.php
--$document_uri: /stat.php
使用frisby 进行post的表单信息的提交,以及nginx缓存的命中相关推荐
- JS同时上传表单图片和表单信息并把上传信息存入数据库,带php后端源码
微信小程序开发交流qq群 581478349 承接微信小程序开发.扫码加微信. 利用JQ,jquery.form.js,bootstrap实现上传表单图片和表单信息并把上传的图片地址,inp ...
- 企业级 SpringBoot 教程 (十九) 验证表单信息
这篇文篇主要简述如何在springboot中验证表单信息.在springmvc工程中,需要检查表单信息,表单信息验证主要通过注解的形式. 构建工程 创建一个springboot工程,由于用到了 web ...
- ztree获取勾选节点数据并且与表单信息合并
分别获取表单数据和ztree数据简单,但是如何把他们合并成一个合理的json数据? 解决方案: $('#save').click(function () {var nodes = zTree.getC ...
- java jquery提交表单数据_[Java教程]jquery实现ajax提交表单信息
[Java教程]jquery实现ajax提交表单信息 0 2016-08-23 15:00:08 最近在思考优化项目,想自己扩展一个jquery自动获取表单中的数据进行ajax提交.本人没有完整性学习 ...
- 2020使用html、js、正则表达式做一个前端注册表单信息验证
使用html.js.正则表达式做一个前端注册表单信息验证 小小前端练手项目,主要运用正则表达式对用户名.密码.确认密码.电子邮箱.手机号码.生日.身份证号码的验证 1.用户名不正确(需由由英文字母和数 ...
- method属性值为get提交表单信息,为什么在地址栏不会显示呢。
method属性值为get提交表单信息,为什么在地址栏不会显示呢. <!DOCTYPE html> <html lang="en"> <head> ...
- uniapp开发微信小程序-7.用户填写表单信息
uniapp开发微信小程序-7.用户填写表单信息 本章让用户通过表单更新自己的个人信息,也是本系列文章最后一篇入门分享,之后碰到新颖.常用的功能会继续分享给大家,如果大家有任何问题欢迎留言,我会尽快线 ...
- form表单提交后台获取表单信息
一.需求 客户端通过前端填写表单信息,后台获取表单信息进行相应处理. 二.工具 前端采用jsp,后台 springmvc 三.示例 (一).前端输入的form表单代码 <form id=&quo ...
- Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)
推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...
最新文章
- chmod +x的意思就是给执行权限
- su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享
- 程序员的职业素养文摘
- JSON.parse()、eval()和JSON.stringify()
- ilm 和dlm差异_《存储e周刊》第28期 信息生命周期管理之争
- Redis总结集群方式之主从复制
- apple pay php 文档,Apple Pay 终于可以支付 iTunes、App Store 中的内容了
- Map And Reduce Join的使用案例
- AT指令集及其通信测试方式
- excel复制后卡死的解决办法
- a+b / a-b / a*b / a/b c++问题题解
- CVE-2018-7490 uWSGI PHP Plugin目录遍历
- 积分(Integral)
- win10更新失败 无法安装 Windows,因为这台电脑的磁盘布局不受UEFI固件支持
- python+ opencv实现摄像头实时人脸识别并实现汉字标框
- MOSFET是什么器件,它的作用是什么
- 正兴证券损失通知书:Rosen Law Firm宣布针对中国正兴车轮集团有限公司提起证券集体诉讼和参加集体诉讼的重要截止日期
- SAP中MIGO收货时分清采购订单和订单收货的区别
- Android 切换全屏,取消全屏
- Java实现 蓝桥杯 历届试题 矩阵翻硬币