Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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/0/asp.net-core/3.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是否正在缓存中重新加载_Javascript - Fatal编程技术网

如何判断javascript是否正在缓存中重新加载

如何判断javascript是否正在缓存中重新加载,javascript,Javascript,我面临的问题是,javascript被缓存在用户的浏览器上,并且在更改进入生产时无法得到更新。由于该站点使用多个嵌入式iFrame,仅使用f5是不够的。我使用的解决方案是首先加载一个脚本,该脚本获取我需要的js文件的所有修改日期,然后将这些日期附加到每个页面的js文件中。每一页看起来都像这样: <script type="text/javascript" src="get_dates"></script>//returns the dates for each f

我面临的问题是,javascript被缓存在用户的浏览器上,并且在更改进入生产时无法得到更新。由于该站点使用多个嵌入式iFrame,仅使用f5是不够的。我使用的解决方案是首先加载一个脚本,该脚本获取我需要的js文件的所有修改日期,然后将这些日期附加到每个页面的js文件中。每一页看起来都像这样:

    <script type="text/javascript" src="get_dates"></script>//returns the dates for each file in array
    <script type="text/javascript">
        document.writeln('<script type="text/javascript" src="' + some_path + '?Mod=' + date_array[pos] + '"></script>...repeat for all scripts
    </script>
//返回数组中每个文件的日期
document.writeln(“…对所有脚本重复
我的问题是:

  • 在修改日期更改之前,如何判断脚本是否被缓存?(我仍然希望它们被缓存,只是如果它们被更新,就不需要缓存)
  • html页面的缓存将如何影响这一点
  • 使用document.writeln(())是否会影响缓存?例如,如果您编写相同的脚本,它们是否仍会被缓存
    • 应该从服务器控制缓存活动
    • 或者使用脚本加载器加载其他脚本并应用于不需要缓存的脚本

    在每个生产版本中对js文件应用版本控制。 比方说

    发布1:

    <script src="source.js?v1.0"></script>
    
    
    
    发布2:

    <script src="source.js?v2.0"></script>
    
    
    
    等等

    通过这种方式,您仍然允许客户端缓存js文件,但缓存在特定版本上

    在修改日期更改之前,如何判断脚本是否被缓存

    只需将过期时间设置为无限期(或者,比方说,1年——这足够长了)。每次
    Mod
    参数更改时,都会请求新文件

    html页面的缓存将如何影响这一点

    一点也不。不过,
    get\u dates
    脚本的缓存会

    使用document.writeln(())是否会影响缓存?例如,如果您编写相同的脚本,它们是否仍会被缓存

    不,它不会影响任何内容。结果-引用外部脚本的
    节点将是相同的


    另请继续阅读

    我担心get_dates脚本被缓存并打乱了整个过程。由于mod dates是从服务器检索的,因此该脚本被缓存是否重要?即使缓存了,它仍会执行对服务器的调用,而不会缓存返回的正确数据?它们是如何实现的“已从服务器检索"?我猜它们是动态包含在
    get_dates
    script中的。get_dates脚本发出一个ajax调用,返回该html页面将使用的所有脚本的mod dates OK,然后它取决于ajax响应的缓存,而不是
    get_dates
    脚本。这将是理想的,但需要更新脚本由于该公司不使用版本控制,因此手动输入版本号。我只是觉得编写一次脚本以获取文件修改日期更容易,并且每次需要scriptIMO时都调用它,这不需要任何版本控制,您只需要添加额外的get参数。这不需要更新所有get参数吗我们什么时候推出新版本?