【问题标题】:Referencing javascript files on my local machine在我的本地机器上引用 javascript 文件
【发布时间】:2012-02-20 04:23:12
【问题描述】:

我知道可以像这样引用网络上的第三方 JavaScript 文件:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

是否可以通过这样做来引用我本地机器上的 javaScript 文件?

<script src="file:///C:/folder/custom_javascript.js" type="text/javascript"></script>

我怀疑这可能是一个禁忌,因为它可能是网站找出客户计算机上的文件的一种方式...

我想这样做的原因是因为我正在谷歌应用引擎上开发一个 javaScript-heavy 应用程序。我希望能够运行和调试对我的 javaScript 文件的修订,而不必每次进行更改时都重新上传它们。目前,每次我在 javascript 中更改某些内容时,我都必须:

  1. 进入我用来运行 javaScript 的 HTML 文件并更改文件名末尾的修订变量,以便旧版本不会缓存在某处:&lt;script src="resource/custom/js/the_file_im_working_with.js?revision=76" type="text/javascript"&gt;&lt;/script&gt;
  2. 将整个应用程序上传到谷歌应用引擎
  3. 更改我在浏览器窗口中加载的 url 末尾的变量,这样我就不会获得该文件的缓存版本,其中包含对其他 javascript 文件的缓存版本的引用:https://my_app.appspot.com/index.html?revision=26
  4. 重新设置 Firefox 调试器中的所有断点,因为现在 Firefox 认为它处理的是不同的文件,因为“revision”变量不同。

这一切的结果是我的注意力被打乱了,浪费了时间。

我尝试在 HTML 标头和浏览器本身中使用缓存选项,但我认为这些文件可能正在被 google 和我的计算机之间的某个服务器缓存。

任何意见或想法将不胜感激!

【问题讨论】:

    标签: javascript caching browser-cache cache-control


    【解决方案1】:

    不,您不能从非本地文件中引用本地文件。最接近的解决方法是在您的机器上设置本地服务器并链接到localhost:

    <script src="http://localhost/script.js"></script>
    

    【讨论】:

    • 我怀疑可能是这种情况。我很抱歉这可能是一个令人讨厌的问题:有没有可以在我的机器上设置的“简单”服务器?所谓“简单”,我的意思是我可以安装和配置而无需了解很多东西。我可以看到这是应该花费 15 分钟的事情之一,但由于我不知道自己在做什么而最终消耗了一整天的挫败感。
    • @DutrowLLC:有很多非常“简单”的服务器 - Uniserver 和 XAMPP 是我想到的两个流行的服务器。
    • 这就是我最终要做的。我使用了 Uniserver。在 Windows Vista 上设置非常容易。我使用符号链接使 JavaScript 源代码可从 Uniserver 的“www”文件夹中获取。
    【解决方案2】:

    为每一个小改动都做一个全新的应用部署似乎太麻烦了。

    您应该尝试在本地开发应用程序。我猜你正在做这一切,因为你非常依赖于 App Engine。但是你至少应该能够在本地开发前端的东西。

    【讨论】:

    • 我应该在问题中指定我无法在本地开发,因为我正在与 App Engine 上的巨大数据库进行交互。不过,我绝对希望这是一个选择。
    【解决方案3】:

    点 1,3 和 4 都由holding down the SHIFT key and reloading the page (or CTRL + F5) 解决。这会告诉 Firefox 和所有介入的缓存您需要 HTML 和所有链接资源的新副本。

    【讨论】:

    • 我不知道 SHIFT 键的事情。我确实将浏览器设置为从不缓存文件。这不是一回事吗?
    • 也许吧。我确实知道一个事实,即当您 shift-reload 时,浏览器会发送带有请求的 Cache-Control: no-cache 标头,并且所有获取此标头的 HTTP/1.1 代理都应该重新获取原始资源。告诉浏览器不要缓存可能不一定会发送此标头。
    • 好吧,我试了一下。不幸的是,它不起作用。有时,修改后的版本会在执行此操作后立即加载。但是,其他时候,我一直按 CTRL+F5 并且旧版本不断出现。我的理论是,一些中继请求的服务器不遵守缓存指令。
    • 尝试安装 Live HTTP Headers Addon 并测试该理论。该插件将为您显示每个请求和响应的时间、etag、状态等。
    【解决方案4】:

    您还可以以相对方式引用文件,如下所示: &lt;script src="scripts/chart.min.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多