移动端发布时候如果不更新路径,那么一些静态资源缓存在本地,新发布的功能便加载不到。为了解决这个问题,下面介绍两种方式。
1.修改项目入口地址
每次发布项目时,打的包里面都需要有v1.0.1这种版本号的文件夹路径,比如正常的前端资源目录为:
带版本号的前端资源路径为:
项目入口地址加上或者修改版本路径/*/v1.0.1/*/即可。
2.nginx重定向
这种方式在修改不了项目入口地址时使用,nginx需要增加一个入口地址的location精确匹配,比如
#/aaa/bbb/index.html为入口地址
location = /aaa/bbb/index.html {
access_by_lua_file /usr/local/aaa/bbb/ccc/ddd.lua;
set_by_lua_block $version {
local tempCache = ngx.shared.tempCache ;
return tempCache:get("version")
}
rewrite ^/(.*)$ https://aaa/bbb/$version/index.html redirect;
}
?其中的lua脚本主要功能是访问http接口获得发布的版本号,然后重写项目入口地址,前提是nginx可以访问通项目入口地址。
ddd.lua内容如下:
local function newClient()
local httpC = http.new()
return httpC
end
local handler = function (premature)
local httpc = newClient()
local resp,err = httpc:request_uri("http://10.1.1.1:8888", {
method = "GET",
path = "/xxx/xxx",
headers = {
["aaa"] = "xxx",
["bbb"] = "xxx"
}
})
local result = json.decode(resp.body).data
tempCache:set("version", result)
end
handler()
|