Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从父页面中的两个框架下载相同的JS文件_Javascript_Html_Frames_Frameset - Fatal编程技术网

Javascript 从父页面中的两个框架下载相同的JS文件

Javascript 从父页面中的两个框架下载相同的JS文件,javascript,html,frames,frameset,Javascript,Html,Frames,Frameset,我正在使用一个包含两个框架的页面。每个帧调用一个页面,然后该页面调用脚本标记中的相同javascript文件。有时,当另一个帧调用js文件时,浏览器会缓存js文件,从而从缓存中抓取它。但是,有时它会下载两个副本,每帧一个。我试图找出是否值得从父页面调用一次脚本,并让每个帧的页面以这种方式访问它。那么,如果另一个框架从缓存中抓取js文件,是否只是浏览器下载js文件的速度有多快的问题?主要浏览器的正常协议是什么 谢谢你的帮助 您可以让脚本查看页面上是否有子iframe,如果有,则动态地向子文档添加脚

我正在使用一个包含两个框架的页面。每个帧调用一个页面,然后该页面调用脚本标记中的相同javascript文件。有时,当另一个帧调用js文件时,浏览器会缓存js文件,从而从缓存中抓取它。但是,有时它会下载两个副本,每帧一个。我试图找出是否值得从父页面调用一次脚本,并让每个帧的页面以这种方式访问它。那么,如果另一个框架从缓存中抓取js文件,是否只是浏览器下载js文件的速度有多快的问题?主要浏览器的正常协议是什么


谢谢你的帮助

您可以让脚本查看页面上是否有子iframe,如果有,则动态地向子文档添加脚本块(使用相同的SRC)。这样,主缓存总是首先加载,子缓存总是使用缓存。

我不太担心。如果在第二帧需要文件时,它已经在缓存中,那么它将使用缓存,如果不需要,它也将加载它。每个浏览器和每个浏览器的每个版本对文件的缓存都有不同的处理方式,所以请忘记它,用自己的包含项将每个帧编码为自己的页面,让浏览器担心缓存问题。

我明白你的意思,但它是一个相当大的JS文件(100+k),我们正在寻找任何可能的速度改进。所以我考虑让父页面调用js文件,然后在访问js文件的框架页面中的每个函数调用中添加“top”。一旦文件被缓存,您就不需要“top”——它已经是页面的本地调用。我的技术确保它只加载一次。如果它是一个大文件,也考虑“缩小”它(例子:)。它可能会减少50%以上的大小这是真的。另外,检查您的服务器是否使用GZIP即时压缩。在父级调用的任何.js文件完成加载之前,帧内容是否不会开始下载?这是一个好问题。浏览器在每个域中打开的HTTP连接数量有限(通常为4个)。因此,iframe可能会在主页完全呈现完成之前开始下载。你应该能够在Firebug中分辨出来。看看Firebug和Chrome开发工具,看起来框架可以而且有时会与父js文件同时下载。