热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html防替换资源,html前端进行资源重载及刷新资源

最近开发webview嵌套开发,遇到资源重载的问题,具体表现在:css缓存强硬,js缓存强硬,无法事实更新静态

最近开发webview嵌套开发,遇到资源重载的问题,具体表现在:css缓存强硬,js缓存强硬,无法事实更新静态资源,但若是禁止页面使用缓存策略的话,对服务器的占用比就会提高,访问少的时候,还好,访问量几何上升时,服务器就GG了。

经过多方查找发现除去glup,webpack,node,以及服务器做资源版本之外,并没有一个简单省事的方法,但项目时单纯的html页面,并没有什么框架使用,如若使用打包方式增加版本号更新缓存的话,相比较会麻烦一些,所以自己扣置了个小玩意。

由于script标签更新src之后并不会资源重载,所以使用了标签重新插入,link标签在更新href之后,资源会重新进行加载,所以直接替换路径

废话不多说,直接上代码:

function EditionFn (edition){

if(edition.notUrl){

edition.notUrl = edition.notUrl.split(",")

}else{

edition.notUrl = ["///"]

}

edition.notHtml = edition.notHtml || "///";

edition.isHtml = edition.isHtml || location.pathname;

if(location.pathname.indexOf(edition.notHtml) > -1 && location.pathname.indexOf(edition.isHtml) <0){

return false

}

var COOKIE &#61; document.COOKIE

COOKIE &#61; COOKIE.split(";")

COOKIE.forEach(function(item){

item &#61; item.replace(/\s*/g, "")

var thistime &#61; item.split("&#61;");

COOKIE[thistime[0]]&#61; thistime[1]

})

function loadJS(script){

var src &#61; script;

var script_dom &#61; document.createElement(&#39;script&#39;);

script_dom.src &#61; src;

script_dom.language &#61; &#39;Javascript&#39;;

script_dom.type &#61; &#39;text/Javascript&#39;;

var head &#61; document.getElementsByTagName(&#39;head&#39;).item(0);

head.appendChild(script_dom);

}

var scrUrl &#61; [];

$(&#39;script&#39;).each(function(){

if($(this).attr("charset") &#61;&#61; "utf-8" && $(this).attr("src") && COOKIE.edition && COOKIE.edition !&#61; edition.edition){

var src &#61; $(this).attr("src")&#43; &#39;?v&#61;&#39; &#43; edition.edition;

scrUrl.push(src)

$(this).attr("src","");

}

})

if(scrUrl.length > 0){

scrUrl.forEach(function(item){

var thisType &#61; true;

edition.notUrl.forEach(function(items){

if(item.indexOf(items) > -1){

thisType &#61; false;

}

})

if(thisType){

loadJS(item)

}

})

}

$(&#39;link&#39;).each(function(){

if($(this).attr("type") &#61;&#61; "text/css" && $(this).attr("href") && COOKIE.edition && COOKIE.edition !&#61; edition.edition){

var src &#61; $(this).attr("href")&#43; &#39;?v&#61;&#39; &#43; edition.edition;

var thisType &#61; true;

edition.notUrl.forEach(function(items){

if(src.indexOf(items) > -1){

thisType &#61; false;

}

})

if(thisType){

$(this).attr("href",src)

}

}

})

var times &#61; new Date().getTime() &#43; 7*24*60*60*1000;

if(COOKIE.edition && COOKIE.edition !&#61; edition.edition){

document.COOKIE &#61; "edition&#61;"&#43;edition.edition&#43;"; expires&#61;"&#43;new Date(times)&#43;";" ;

}else{

document.COOKIE &#61; "edition&#61;"&#43;edition.edition&#43;"; expires&#61;"&#43;new Date(times)&#43;";";

}

}

调用如下&#xff1a;

EditionFn({

edition:edition,

notUrl:"base64.js",

notHtml: &#39;///&#39;,

isHtml: "cssAndjsSession"

})

代表参数如下&#xff1a;

edition: 版本号

notUrl&#xff1a;不重载更新资源&#xff0c;默认为空

notHtml&#xff1a;不重载更新路径&#xff0c;默认为空

isHtml&#xff1a;重载更新指定页面(目前只能指定单个页面&#xff0c;要想多个页面自己去改代码吧)&#xff0c;默认所有页面都会更新

第一次请求时&#xff0c;不会资源重载&#xff0c;只有版本号不符时&#xff0c;会进行资源重载

欢迎各位指教一二



推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文详细介绍了如何利用CSS技术对链接下划线进行个性化定制和美化,涵盖了多种实用技巧和方法。通过对CSS属性的灵活运用,可以实现不同风格的下划线效果,提升网页的视觉体验。文中不仅提供了基础的代码示例,还结合实际案例进行了深入解析,帮助读者更好地理解和应用这些技巧。此外,文章还引用了《CSS2.0中文手册》中的相关内容,增加了技术的权威性和实用性。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 为开发者提供了一系列实用的参考网站和资源链接,包括HTML速查手册( 和 ),帮助开发者快速查找和学习相关技术知识。此外,还涵盖了其他重要的开发工具和文档,为编程工作提供全面支持。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
author-avatar
醒来时t我尚年少你未老
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有