工作中遇到app和h5混合开发,但是在开发过程中有时候不用开发环境,h5如果修改后再打补丁上传到测试模拟等服务器,耗费时间,影响开发效率。所以在本地使用nginx启动一个web服务,将h5中的请求转发到对应环境。
h5修改频繁,静态资源会有缓存问题,获取到的不是最新的。所以在网上百度了下。解决如下:
修改配置:
location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$
{
root D:/git/Bus365H5;
expires 1s;
}
location ~ .*\.(?:js|css)$
{
root D:/git/Bus365H5;
expires 1s;
}
location ~ .*\.(?:htm|html)$
{
root D:/git/Bus365H5;
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
使用expires来设置文件在nginx缓存时间,nginx会在根据url缓存中查找是否有对应文件,文件是否过期。如果在修改配置之前访问过资源,需要清理一下缓存。
有些资源不是在本地,是放在服务器中,可注意匹配规则:
nginx location的四种类别:
【=】模式: location = path,此种模式优先级最高(但要全路径匹配)
【^~】模式:location ^~ path,此种模式优先级第二高于正则;
【~ or ~*】模式:location ~ path,正则模式,优先级第三,【~】正则匹配区分大小写,【~*】正则匹配不区分大小写;
【path】模式: location path,中间什么都不加,直接跟路径表达式;
location ^~ /wwwtm/public/www/js/tingyun.js {
#rewrite ^.+mrawm/?(.*)$ /$1 break;
#include uwsgi_params;
proxy_pass https://wwwt.bus365.cn/public/www/js/tingyun.js;
}
如tingyun.js是放在服务器中,本地不存在。可通过添加匹配规则。