修改js文件,引发的404问题

记录一个bug,本地测不出来,客户后台却404,web测试可参考。(不知道是不是通用的)

先介绍下背景

我们是web产品,存在发布机、管理机、js文件,页面会引用到这些js文件。出于安全考虑,规定js文件名称和文件里面都不得带有版本号。

现在描述bug的来龙去脉

比如某个js文件叫juery.2.1.1,有10个页面引用了它。这时把它的名称改掉,叫SuperSlide。按说那10个页面里面的名称也要相对应改掉,但是只改了7个页面,3个漏

改了。所以讲道理,这3个漏改的页面,前台访问的话会报js404错误。但是不然,本地测试环境的前台一切正常。

而把网站包导到客户环境,再去访问,就找不到js文件了,猝。

原因是啥呢?因为js文件是静态资源,发布的时候,是“增量式发布”。即,修改js文件名称和页面里的名称之前,发布过一次,这时发布机上存的是juery2.1.1文件---页面

里面juery2.1.1的映射关系。修改过以后,对于那3个漏掉的页面来说,再次发布,发布机里存的是Superslide文件---页面里面juery2.1.1的映射关系。这时在前台访问的话

会把所有的映射关系都遍历一边,即便在第二次的发布里找不到映射关系,在第一次的也能。总之,能找到引用的js文件,前台就不会报错。

而客户环境呢?是把本地修改后的网站包导到客户环境的,那么对客户环境进行发布之后,发布机存储的只有Superslide文件---页面里面juery2.1.1的映射关系,当然在

前台就报错了!

如何测试呢?

1.测试人员把本地发布机的js文件全部删除

2.本地访问,检查前台js报错情况

以上,web测试的朋友可以参考。

原文地址:https://www.cnblogs.com/jitipaper/p/11756146.html

时间: 2024-10-14 15:00:01

修改js文件,引发的404问题的相关文章

Idea使用记录--每次修改JS文件都需要重启Idea才能生效解决方法

最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能有这么不方便的功能存在. 需要在Tomcat的设置中为: on 'update' action:当用户主动执行更新的时候更新 快捷键:Ctrl + F9 on frame deactication:在编辑窗口失去焦点的时候更新 你可以根据自己的需求进行设置,我这里两个都有设置. 如果你的工程中没有

Idea-每次修改JS文件都需要重启Idea才能生效解决方法

最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能有这么不方便的功能存在. 需要在Tomcat的设置中为: on 'update' action:当用户主动执行更新的时候更新 快捷键:Ctrl + F9 on frame deactication:在编辑窗口失去焦点的时候更新 你可以根据自己的需求进行设置,我这里两个都有设置. 如果你的工程中没有

本地修改js代码并时时生效的解决办法

js作为客户端语言(当然它也可以作服务端语言),非常强悍,一般情况下,我们都是在开发阶段不停的改,然后上线之后就作为稳定运行的代码. 然而有时候可能因为js写得有问题,导致上线后,某些功能无法使用,这就悲催了,而且一般的公司上线应该都不会很容易. 那么对于这种js一类的修改,如果能在本地临时生效,做一些紧急问题的修复,就很重要了.(我也是遇到这个坑,只要把这次临时问题修复,等下一个功能代码要上线时,再修复也是可以的) 那么,怎样做到本地修改js文件,从而达到代码运行ok的效果呢? 本文将会给出多

JS文件中引用另一个JS文件

1.生产项目上遇到一个Bug,需要修改JS文件,添加Jquery代码,但是原来的页面没有添加对Jquery文件的引用,无法修改原来的页面(自动生成的HTML) 这就需要在JS文件中添加对Jquery文件的引用.. 而且是先引用Jquery,再把添加的代码放到a.js中,后引用a.js document.write("<script language=javascript src='/Scripts/jquery-1.4.1.min.js'></script>")

ThinkPHP环境下JS文件按模块部署

0.序言 一般来说,ThinkPHP的JS文件目录不是太友好:但允许修改参数确定JS的存放路径. 按照ThinkPHP的目录规范,JS文件一般视同静态资源处理,这样JS文件和视图htm文件将部署在两个完全不同的目录,即使二者属于同一应用.模块.通过Thinkphp提供的模板替换功能,配置模块的JS路径参数,可以将JS文件和普通视图文件都放在同一目录,例如Application/Module/View/目录下,这样在按应用.模块部署将变得更加便捷:两种文件所在位置比较接近,开发过程也相对比较方便(

js文件被浏览器缓存

如果修改了js文件中的js代码,发布代码到线上后.用户的浏览器使用的还是原来js缓存.所以并不会马上生效. 如何才能让浏览器使用最新的js文件呢? 我去看了一下淘宝,发现也是这样一种方式额,不知道对不对? 如下: 15年8月12日补充: 公司有好几千万注册会员,于是第三方应用使用我们网站会员帐号实现在第三方网站登录,需要设计oauth2.0授权的平台,于是需要参考微博的oauth体制. 无意中发现他们的css也是使用年月日来控制 进一步思考: 这种加时间方法是可行..不是系统生成的时间,不是所有

jsp引入js文件

转自:http://blog.csdn.net/ppzhangj/article/details/7859628 1)引入的js文件出错, 检查方法:将Js的内容写在当前的页面的<script> </script>之间,看是否能够正常运行,如果不能,请核查代码 2) 如果引入的代码在当前页面中能够正常运行,但当引入时不能正常运行,则有两种可能    A:引入Js的路径有问题    B:引入的Js的编码格式与当前页面不匹配: 3)引入Js的路径问题    js的引入不外乎两种,相对路

后台修改js或者css文件之后,客户端刷新但是无效的问题

前端开发会遇到一个问题:修改测试前端代码的时候,有时候修改了css或者js文件,但是前端刷新的时候却没有反应,不免让人感觉是不是修改错误,其实这有可能是客户端缓存问题.解决方法: 1)Ctrl+F5,清除浏览器缓存(等同于浏览器-->历史数据-->删除cookies) 2)在js或css后加版本号,这时候浏览器客户端会认为这是不同版本的js或者css文件,会自动重新刷新下载(浏览器会缓存下载页面js和css文件) 2.1)形如:.css?v=x  或者 css?version=x     &l

js 动态修改css文件

_.find(document.styleSheets[4].cssRules,function(cssRule){ if(cssRule.selectorText && cssRule.selectorText.indexOf(".navbar-fixed-top2")>-1){ cssRule.style.position=""; cssRule.style.top = "0px"; } if(cssRule.selec