nginx中文文档-ngx_stream_geo_module

此页面版本:2016-08-10,57ab4631-be8
ngx_stream_geo_module模块(1.11.3+)根据客户端IP地址创建变量。

示例配置:

geo $geo {
    default        0;

    127.0.0.1      2;
    192.168.1.0/24 1;
    10.1.0.0/16    1;

    ::1            2;
    2001:0db8::/32 1;
}

geo

语法:geo [$address] $variable { … }
默认:—
上下文:stream

描述指定变量的值与客户端IP地址之间的依赖关系。默认情况下,地址从$remote_addr变量中获取,但是它可以从另外的变量中获取,例如:

geo $arg_remote_addr $geo {
    ...;
}

由于变量在使用时才会解析,可以在geo中声明一个很大的变量映射表,不会引起任何额外的开销。
如果变量的值不是一个合法的IP地址,则使用“255.255.255.255”。
地址可以指定为CIDR地址块格式,也可以为范围。
下面特殊的参数同样受支持:
delete
删除指定的网络。

default
为那些没有匹配任何指定IP地址的客户端地址设置一个默认值。当地址是以CIDR方式指定,“0.0.0.0/0”和“::/0”用于替换默认值。当默认值没有指定,则默认值为空字符串。

include
包含一个含有地址和值的文件。可以有多个包含。

ranges
声明地址定义为一个范围。这个参数应该在最先出现。为了加快载入的速度,地址应该以升序排列。

例子:

geo $country {
    default        ZZ;
    include        conf/geo.conf;
    delete         127.0.0.0/16;

    127.0.0.0/24   US;
    127.0.0.1/32   RU;
    10.1.0.0/16    RU;
    192.168.1.0/24 UK;
}

conf/geo.conf文件包含以下内容:

10.2.0.0/16    RU;
192.168.2.0/24 RU;

最匹配的值将被使用。例如,地址127.0.0.1会使用“RU”,而不是“US”。

带范围的例子:

geo $country {
    ranges;
    default                   ZZ;
    127.0.0.0-127.0.0.0       US;
    127.0.0.1-127.0.0.1       RU;
    127.0.0.1-127.0.0.255     US;
    10.1.0.0-10.1.255.255     RU;
    192.168.1.0-192.168.1.255 UK;
}

JavaScript Vibration震动API

Vibration API用于控制移动端设备的震动器,它可以设置一个震动序列以完成不同时间间隔的震动频率。

一、应用场景

震动API主要应用于移动端游戏等交互类页面,例如设计类游戏可以在击中目标后调用震动器来增强用户体验。
它还可以用来做报错类的提醒,例如用户对一个表单的必填项没有进行填写,在校验失败后,可以调用震动API来提示用户进行填写。
具体使用场景需要考虑清楚,以免滥用反而影响用户体验。

二、兼容性

目前在caniuse上看到的兼容性情况是有问题的,有些浏览器虽然兼容,但基本上除了移动设备外,其他的上网设备都没有震动器,所以桌面版的浏览器虽然支持此API,但并不能使用(使用没有效果但不报错),故只应该应用于移动项目中。
目前在以下APP(Android系统)的最新版本中测试均有效:
360极速浏览器
UC浏览器
手机QQ内置浏览器(未测试QQ浏览器,但应该会支持)
微信
微博
三星手机默认浏览器(Android 5.1.1版本)

三、用法

navigator.vibrate可以控制震动器震动
它接收一个参数,表示震动序列,例如:
navigator.vibrate(1000)表示震动1000毫秒
navigator.vibrate(1000, 500, 1000)表示震动1000毫秒后,暂停500毫秒,然后再震动1000毫秒
当在一个震动的过程中,希望取消震动,则可以调用此方法,第一个参数为null或[]、[0]等:
navigator.vibrate(0)
navigator.vibrate(null)
navigator.vibrate([])
navigator.vibrate([0])
navigator.vibrate([0, 0, 0, ……])//全都是0,没什么意义

四、演示
请使用手机打开,支持微信,建议WIFI环境下打开,需要消耗600k左右的流量。
https://www.lyz810.com/demo/vibration/