我从Eclipse转到了Jdeveloper。我有一个奇怪的问题,我能够解决,但无法理解。
每当我在Jdeveloper的Web项目中对HTML进行任何更改时,我再次运行HTML时都没有反映出这些更改。旧的网页不断进入网络浏览器。相同的源代码。相同的CSS / JS。我发现只要我的网络浏览器中有代理设置,就不会反映出这些变化。但是,如果我关闭代理,则会反映HTML中所做的更改,即显示上次更改时显示的网页。
通过代理集我的意思是代理设置放在下面 窗口 - >开始菜单 - >互联网选项 - >连接 - >局域网设置 - >代理服务器
我试图在Google Chrome,Firefox和Internet Explorer上运行生成的网址。只要Web浏览器使用代理,就不再通过再次运行来显示HTML中所做的更改。
在Eclipse Juno中,我只需清理Tomcat的目录即可反映出更改。
任何人都可以解释为什么会这样?
答案 0 :(得分:5)
Web服务器返回每个响应的HTTP标头,通常这些标头指定可以缓存响应的时间。代理服务器读取这些标头并在他们再次看到相同的请求时做出决定 - 是否再次将该请求传播到服务器,或者只是返回响应的缓存副本。
您可以修改服务器的配置,以便下次它告诉代理服务器不要缓存页面。但是,某些代理服务器配置错误或损坏,并将缓存它们不应缓存的页面。
对于这些情况,一个丑陋的解决方案是在您更改它们时为您的JS和CSS文件提供新名称。例如,如果您的index.html文件包含index.css和index.js,并且您对index.js进行了更改,则可以将更改的文件另存为index.2.js并更改index.html文件中的标记从现在开始指向index.2.js。
这有点激烈,但它确实有效。一个更简单的解决方案是使用Shift-F5而不是F5(在浏览器中)刷新页面。这告诉浏览器尽可能强制刷新所有缓存页面。
答案 1 :(得分:3)
这似乎与您的代理服务器类型有关。有几种代理服务器类型,其中一种是" Caching Proxy Server"。如果许多用户连接到它,则允许静态页面本地存储在服务器上,以便客户(您)重复请求。当您更改代理时,由于没有您作为活动客户端,或者您是新用户,因此很可能只是向您发送更新的副本。
我认为您正在构建的新软件上的内容正在预先保存已保存的页面名称,而Eclipse Juno正在动态生成实时屏幕,绕过缓存的服务器选项。