当前位置: 首页 > wzjs >正文

怎么在网站做直播间友情网

怎么在网站做直播间,友情网,淄博建设公司网站,国外域名服务商前言 你是否也曾遇到过这种情况,每次发完版之后都还会有用户反馈问题没有被修复,一顿排查之后发现他用的还是旧的版本。 用户:在 XX 页面 XX 字段还是不展示 我:刷新下页面 用户:刷新了啊 我:强刷一下&…

前言

你是否也曾遇到过这种情况,每次发完版之后都还会有用户反馈问题没有被修复,一顿排查之后发现他用的还是旧的版本。

用户:在 XX 页面 XX 字段还是不展示
我:刷新下页面
用户:刷新了啊
我:强刷一下,Ctrl + F5

这一切都要归咎于 浏览器缓存,那么如何解决这一痛点呢?这篇文章将介绍如何检测版本变更并通知用户刷新页面。

实现思路

  1. 在项目构建(build)的时候,生成一个 version.json 版本信息文件,路径:dist/version.json
  2. 在切换路由的时候去请求服务器的 version.json 文件与本地缓存的版本信息做一个对比

准备工作

本文使用的是 Angular 技术栈,但是本质上还是使用的 webpack 去构建,所以万变不离其宗!

  • angular | v17
  • @angular-builders/custom-webpack | v17

开始

一、Angular 自定义 Webpack 配置

1.1 安装 @angular-builders/custom-webpack

npm install @angular-builders/custom-webpack -D

1.2 使用自定义配置运行开发服务器:@angular-devkit/build-angular -> @angular-builders/custom-webpack

"architect": {..."build": {"builder": "@angular-builders/custom-webpack:browser","options": {"customWebpackConfig": {"path": "./extra-webpack.config.ts"},...}},"serve": {"builder": "@angular-builders/custom-webpack:dev-server","options": {"browserTarget": "my-project:build"}}...
}

1.3 配置 extra-webpack.config.ts

import * as webpack from "webpack";export default (config: webpack.Configuration) => {config.plugins = [...config.plugins,// 这里配置插件];return config;
};

二、自定义版本信息插件

2.1 创建插件 version-plugin.js,参考文档 creating-a-plugin

const fs = require("fs");
const path = require("path");class VersionPlugin {constructor({ version }) {this.version = version;}apply(compiler) {compiler.hooks.done.tap("VersionPlugin", (stats) => {const versionInfo = {version: this.version,buildTime: new Date().toISOString(),};const outputPath = stats.compilation.options.output.path;const versionFilePath = path.resolve(outputPath, "version.json");fs.writeFileSync(versionFilePath, JSON.stringify(versionInfo, null, 2));console.log("Version file generated successfully!");});}
}
module.exports = VersionPlugin;

2.2 在 extra-webpack.config.ts 中使用 VersionPlugin 插件

import * as webpack from "webpack";
import * as VersionPlugin from "./version-plugin.js";export default (config: webpack.Configuration) => {const version = new Date().getTime();config.plugins = [...config.plugins,// 将版本号写入全局变量new webpack.DefinePlugin({"process.env.VERSION": JSON.stringify(version),}),// 创建 version.json 放入 dist 目录new VersionPlugin({ version: version }),];return config;
};

运行 npm run build 检测 version.json 文件是否写入成功!

三、检测变更并通知

我这里选择的是在用户切换路由的时候去检测,当然也可以选择其它的时机,例如开一个定时器,等。

3.1 在 app.component.ts 中去监听路由变化

import { Router, NavigationStart } from "@angular/router";export class AppComponent {constructor(private router: Router) {this.onRouterChange();}onRouterChange(): void {this.router.events.subscribe((event) => {if (event instanceof NavigationStart) {this.checkVersion();}});}
}

3.2 实现检测版本的方法,请求远程服务器的 version.json 版本信息与项目中的全局变量 process.env.VERSION 做对比

checkVersion(): void {if (!environment.production) {return;}fetch('./version.json').then(response => response.json()).then(versionInfo => {if (versionInfo.version !== process.env.VERSION) {// TODO: 弹窗提示 或 直接刷新this.refresh();}}).catch(error => {console.error(error);});
}refresh(): void {window.location.reload(true);
}

done!

结语

看到这里,希望能够给你提供一点思路,方法有很多种,也欢迎一起交流讨论!

http://www.dtcms.com/wzjs/98841.html

相关文章:

  • 东莞网站建设 模具营销目标分为三个方面
  • 怎么做购物平台网站百度推广登陆平台
  • php网站开发技术期末题库seo搜索引擎优化怎么优化
  • 手机版网站开发教程今日国内最新新闻
  • 网站现状分析网络推广运营推广
  • 网站开发遇到的难点比较正规的代运营
  • 263企业邮箱手机版登录360优化大师官方版
  • 京东网站是哪个公司做的网页在线客服免费版
  • ppt做的比较好的网站深圳网络推广最新招聘
  • 卡盟怎么网站怎么做个人网站制作教程
  • 大型网站如何优化百度站长工具综合查询
  • 贵阳网站建设公司哪家好阿里巴巴推广
  • 随州网站建设有限公司对网站进行seo优化
  • 个人开办导航网站需要怎么做贴吧高级搜索
  • 上网站建设网络推广项目计划书
  • 响应式企业网站建设网站怎么做外链
  • wordpress悬赏功能深圳关键词推广优化
  • 个人盈利网站怎么建立大批量刷关键词排名软件
  • 怎样在微信中做网站优化排名工具
  • 旅游网站建设项目策划书广州今日新闻最新消息
  • 网站建设简运维 简历windows优化大师在哪里
  • 快速搭建网站模板 下载关联词有哪些关系
  • 阿里云网站建设步骤营销推广文案
  • 自己做网站需要多少资金临沂森拓网络科技有限公司
  • 6wordpress苏州关键词优化怎样
  • 怎么做网站广告古董qq营销软件
  • 在信息发布网站建设外链电商seo搜索优化
  • wordpress独立友情链接百度seo排名优化公司推荐
  • 做社情网站犯法怎么办站长工具高清吗
  • 网站seo数据分析2023年免费进入b站