【问题标题】:Help me to understand <script src="some.js?param1=one;param2=two" />帮助我理解 <script src="some.js?param1=one;param2=two" />
【发布时间】:2010-12-29 13:45:13
【问题描述】:

我有时会在网页上观察到如下所示的块。所以我很想知道这到底是做什么的?或者为什么会这样写?

<script src="somefile.js?param1=one&param2=two" />

我只能看出它背后的几个意图

  • 它不是页面 URL(我的意思是 .aspx/.php/.jsp 等),因此它不是黑客类型的代码,用户可以添加这样的代码来传递数据而不会引起用户注意,因为它的标签不会呈现在UI 或实现旧类型的 AJAX 替代方案
  • 如果用户不希望 JS 文件(任何其他资源,如图像)被缓存,这种 URL 参数很有用。这是管理缓存的快速方法

但我无法弄清楚以下内容

  • 看起来像页面 URL 参数,但这些参数在 JavaScript 文件中是否可读并且有一些额外的实用程序?
  • 这些参数在这里有什么额外的作用吗?
  • 还有哪些其他可能的实际场景可以使用/使用此类代码?

所以请提供一些与之相关的输入

谢谢,

【问题讨论】:

  • 欢迎来到 StackOverflow!第一个问题很好。
  • 记得接受您认为最有帮助的答案。

标签: javascript ajax web-services scripting rest


【解决方案1】:

在 .js 扩展中运行非 JS 代码

在这种情况下,源 .js 文件可能(给定 proper server-configurations)实际上包含 PHP/.NET 代码,可以读取这些附加值。

如你所说,避免缓存...

此外,人们有时会在其引用元素的末尾附加一个随机字符串以避免加载缓存数据。

【讨论】:

    【解决方案2】:

    带有 '.js' 的 URL 没有任何意义。它仍然可以由 ASP 或 PHP 等服务器端脚本处理。

    【讨论】:

      【解决方案3】:

      javascript文件不是静态的(它是由服务器根据其查询字符串中的参数生成的)

      在 JavaScript 文件本身中,您可以让它检查自己的查询字符串参数(不仅仅是页面的参数,还有 javascript 源 url 的参数)。

      (这与您的方案不完全匹配,但是)您还可以在图像和脚本 url 的末尾添加参数作为版本控制的一种方式。带有 url="somescript.js?V=3" 的版本将被用户缓存,直到页面发生变化并且 url 不是="somescript.js?V=4"。无论浏览器设置如何,文件都将替换为服务器上的版本。

      我的猜测(不看这个具体案例)是 javascript 文件正在读取它自己的查询字符串。我已经这样做了,它非常有帮助。

      【讨论】:

      • 您还可以添加时间戳作为参数,以防止客户端 javascript 缓存(这在某些特定情况下会有所帮助)。
      【解决方案4】:

      看起来像页面 URL 参数,但这些参数在 JavaScript 文件中是否可读并且有一些额外的实用程序?

      是的 you can 用 Ja​​vaScript 读取它们,Scriptaculous 使用这种方法来加载模块,例如:

      <script type="text/javascript" src="scriptaculous.js?load=effects,dragdrop">
      </script>
      

      这些参数在这里有什么额外的作用吗? 可以/使用此类代码的其他可能的实际场景是什么?

      这也可以用于服务器端脚本加入和缩小,当然使用一些 url 重写技术来拥有 .js 扩展名,正如你所说,添加时间戳参数以破坏浏览器缓存是一种常用技术。

      【讨论】:

        【解决方案5】:

        它可以用于三个不同的原因:

        1) 根据参数在服务器端生成JavaScript文件;

        2) 避免缓存;

        3) 致pass parameters to JavaScript itself

        【讨论】:

          【解决方案6】:

          实践中的一个示例是 somefile.js 的服务器端处理程序,它使用参数(其他脚本的名称)来确定实际需要哪些脚本并组合/缩小它们,将它们作为单个 somefile.js 返回脚本文件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-26
            • 2015-01-13
            • 1970-01-01
            • 1970-01-01
            • 2021-06-16
            • 2015-01-03
            • 2010-12-21
            • 1970-01-01
            相关资源
            最近更新 更多