每当我发布新代码时如何从客户端清除本地存储

Posted

技术标签:

【中文标题】每当我发布新代码时如何从客户端清除本地存储【英文标题】:How to clear Local Storage from client whenever i publish new code 【发布时间】:2018-07-25 20:50:44 【问题描述】:

我已经在 Angular 4 上构建了我的应用程序,并且我正在使用本地存储来存储用户会话。我想要的是每当我发布我的应用程序时,应该重置用户本地存储,以便发布前的数据不会产生任何问题。

我该怎么做?

【问题讨论】:

Clearing localStorage in javascript?的可能重复 在 jQuery 中 - ***.com/questions/10710674/… @VTodorov 我想,你不明白他想要什么。 @NnN jQuery 与 localStorage 无关,并且链接中的答案都没有引用 jQuery O.o 每当新版本低于当前清除的本地存储时,您必须编写带有版本更新的脚本,但他会让用户注销,第一次,您不能在发布代码时这样做,这是客户端,以便在用户打开网站时更新 【参考方案1】:

使用版本控制,在客户端保留一个额外的密钥,它将拥有最后一个版本。如果版本匹配则意味着没有发布新代码,如果版本不匹配则表明新代码已通过,那么只需使用一个实用程序来清除本地存储。

【讨论】:

这样我必须确保每次该版本都应该更新到+1,或者可以使用包json中的角度项目版本来完成。 有一个全局常量,你可以在每次发布时更新它,考虑到你正在使用一些构建脚本。 我每次都会用新版本更新 package.json 文件,然后用旧会话检查。 @PraveenRawat 完全正确。尝试将其包含在构建工具本身中,使其自动化。【参考方案2】:

您可以在应用程序和本地存储中存储版本字符串。 在您的应用程序启动时,您检查 localStorage 中的字符串是否与应用程序中的字符串匹配。如果没有,请清除本地存储。

【讨论】:

感谢人的回复,但我正在考虑自动化这件事。这样我就不必经历释放的痛苦。【参考方案3】:

配置/app.php

return [
        'version'         => env('APP_VERSION', "1.0.0"),

在 ***.blade.php 中

<script>
    var version_app = " config('app.version') "
</script>

添加到**.js

if(typeof localStorage.version_app === 'undefined' || localStorage.version_app === null) 
        localStorage.setItem('version_app', version_app);
    
if(localStorage.version_app != version_app)
            localStorage.clear();
    

当你更改版本时,脚本会自动删除localStorage数据

【讨论】:

【参考方案4】:

2021 年 5 月 20 日。

使用应用版本控制

最佳做法是自动执行版本控制,这样您就不必一次又一次地手动设置应用版本。

这个想法是

    获取当前的 git SHA,如果没有找到旧的 SHA,将其存储在本地存储中。 如果找到旧的 SHA,比较 SHA,如果不相等,清除存储,在本地存储中设置新的 SHA。

这将为您提供当前提交 SHA 的当前短版本。

git rev-parse --short HEAD

在您的 package.json

scripts:
     start : `REACT_APP_CURRENT_GIT_SHA=`git rev-parse --short HEAD` react-scripts app.js

在代码中,我们通过

process.env.REACT_APP_CURRENT_GIT_SHA

代码:

const APP_VERSION = process.env.REACT_APP_CURRENT_GIT_SHA;

if (typeof localStorage.APP_VERSION === 'undefined' || localStorage.APP_VERSION === null) 
    localStorage.setItem('APP_VERSION', APP_VERSION);


if (localStorage.APP_VERSION != APP_VERSION) 
    localStorage.clear();
`

【讨论】:

它帮助了我,谢谢!我还要补充一点,在 package.json 我使用 "scripts": "build": "REACT_APP_CURRENT_GIT_SHA=`git rev-parse --short HEAD` react-scripts build", "start": "REACT_APP_CURRENT_GIT_SHA=`git rev-parse --short HEAD` react-scripts start", This article about app versioning 更好。

以上是关于每当我发布新代码时如何从客户端清除本地存储的主要内容,如果未能解决你的问题,请参考以下文章

我们如何从网页中清除浏览器本地存储[重复]

将 url 留在 Angular 中时从本地存储中删除值

关闭所有选项卡时删除/清除本地存储[重复]

在浏览器关闭时为 React 明确清除本地存储

如何在关闭特定选项卡而不是在 Angular 2 中关闭浏览器时清除本地存储?

在phonegap IOS上重新启动应用程序后清除本地存储?