【问题标题】:Changes in HTML not reflected as long as I am using proxy只要我使用代理,HTML 的更改就不会反映出来
【发布时间】:2014-03-09 16:52:39
【问题描述】:

我从 Eclipse 转到 Jdeveloper。我有一个奇怪的问题,我能够解决但无法理解。

每当我在 Jdeveloper 的 Web 项目中对 HTML 进行任何更改时,这些更改都不会在我再次运行 HTML 时反映出来。旧网页不断出现在网络浏览器中。相同的源代码。相同的 CSS/JS。我发现只要我的网络浏览器中有代理设置,这些更改就不会反映出来。但是,如果我关闭代理,HTML 中所做的更改就会反映出来,即网页会显示上次所做的更改。

代理设置是指代理设置位于以下位置 窗口 -> 开始菜单 -> 互联网选项 -> 连接 -> 局域网设置 -> 代理服务器

我尝试在 Google chrome、Firefox 和 Internet Explorer 上运行生成的 URL。只要网络浏览器使用代理,在 HTML 中所做的更改就不会通过再次运行来显示。

在 Eclipse Juno 中,我只需清理 Tomcat 的目录即可反映更改。

谁能解释为什么会这样?

【问题讨论】:

    标签: java html eclipse proxy jdeveloper


    【解决方案1】:

    Web 服务器会在每个响应中返回 HTTP 标头,这些标头通常指定响应可以缓存多长时间。代理服务器读取这些标头并在它们再次看到相同的请求时做出决定——是再次将该请求传播到服务器,还是简单地返回响应的缓存副本。

    您可以修改服务器的配置,以便下次它告诉代理服务器不要缓存页面。但是,某些代理服务器配置错误或损坏,并且会缓存不应缓存的页面。

    对于这些情况,一种有效的丑陋解决方案是在您更改 JS 和 CSS 文件时为其指定新名称。例如,如果您的 index.html 文件包含 index.css 和 index.js,并且您对 index.js 进行了更改,则可以将更改后的文件保存为 index.2.js,并更改 index.html 文件中的标签从现在开始指向 index.2.js。

    这有点激烈,但它确实有效。一个更简单的解决方案是使用 Shift-F5 而不仅仅是 F5(在您的浏览器中)刷新您的页面。这会告诉浏览器尽可能强制刷新所有缓存页面。

    【讨论】:

      【解决方案2】:

      这似乎与您的代理服务器类型有关。有几种代理服务器类型,其中一种是“Caching Proxy Server”。如果有许多用户连接到它,则允许静态页面本地存储在服务器上,以用于来自客户端(您)的重复请求。当您更改代理时,很可能只是由于您没有作为活动客户或您是新用户而向您发送更新的副本。

      我假设您正在构建的新软件上的内容是预先缓存保存的页面名称,而 Eclipse Juno 正在动态生成实时屏幕,绕过缓存服务器选项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 2016-11-12
        • 2010-12-27
        • 1970-01-01
        • 2012-03-09
        • 2020-09-18
        • 1970-01-01
        相关资源
        最近更新 更多