【问题标题】:How to force update of design changes to clients using xPages?如何使用 xPages 强制更新客户端的设计更改?
【发布时间】:2012-02-17 17:41:00
【问题描述】:

我正在使用 xPages 构建网页,并且不断更改脚本和设计,这包括服务器和客户端 javascript、样式表和图像更改。

每次我更改 javascript 或样式表时,我都希望在网络浏览器中查看我的更改,并且我还希望我的用户在访问网页时获得最新的更改。

我知道我可以使用 Shift-Reload 或 CTRL-reload 并清除我的网络浏览器缓存。而且我也知道我可以更改对象的到期日期,但我想要一种更顺畅、更好控制的方式来做到这一点。

寻找任何类型的最佳实践来做到这一点。

谢谢

托马斯

【问题讨论】:

  • 当您不想让您的用户缓存它时,您的网页会变得很慢。我没有遇到任何问题,大多数时候只需关闭和打开浏览器就会获取最新的更改。但是,如果有任何启用缓存的代理服务器处于活动状态,那么这将非常困难。

标签: javascript stylesheet lotus-domino xpages cache-expiration


【解决方案1】:

在应用程序的 xsp.properties 文件中或在服务器上供服务器广泛使用时,您可以设置 xsp.application.forcefullrefresh=true。 xsp.properties 文件文档说:

# 应用刷新 # 当此属性设置为 true 时,则请求完整的应用程序刷新 # 类的设计发生了变化(意味着所有数据都被丢弃在作用域中)。

# xsp.application.forcefullrefresh=false

新的 XSP 便携式命令指南说“此属性是在 Notes/Domino 8.5.3 中引入的。默认设置为 false,在 XPage 应用程序的开发阶段特别有用。”

我还没有完全测试过这种行为,但听起来很有希望。您当然可以/应该只在进行更改时将其设置为 true。稳定后,将其放回原处。

/新人

【讨论】:

  • 今天早上测试了它,它正在工作 - 特别是在 Notes 客户端 (XPiNC) 中!
【解决方案2】:

添加到 Ferry 的回答和您的评论;

您可以使用“?version=2.1”来代替“?dummy=randomvalue”。所以它会被缓存,但是当你改变设计时,你可以增加版本。

这种方法存在问题,因为某些代理服务器不会使用查询参数缓存任何内容。最好直接重命名文件,为其添加日期或版本号。它会一直有效。

要暂时禁用缓存,请使用 Fiddler2。在任何 Web 客户端中的一处都可以轻松启用和禁用。以及 http 请求跟踪功能的额外好处。

【讨论】:

    【解决方案3】:

    要完全禁用任何缓存添加 url + '"?dummy=" + @Unique();'到每个 url 到 javascript 或图像文件...

    【讨论】:

    • 感谢您的回答,实际上我不想禁用缓存,我想我想设置一个时间或日期,将新的设计更改应用于客户端。想想facebook向客户推送新设计时,他们是怎么做的?他们是否会临时更改缓存过期以允许客户端获取新设计?
    【解决方案4】:

    我阅读此问题的方式是,您希望所做的每项更改都立即显示在客户端的浏览器或客户端上。你真的确定要这样做吗?听起来您没有进行任何测试,因此任何拼写错误、错误、崩溃等都会传递给您的用户。对我来说,这听起来像是一个糟糕的计划。我希望我错了,您正在使用模板并且仅将经过全面测试的更改推送到生产版本,而不是在生产版本中进行更改。

    我只是制定一个时间表,说明何时将更改推送到生产环境,并让用户在那时重新加载他们的浏览器或客户端。要么这样做,要么在下班时间进行,当他们下次登录时,他们会得到最新的更改。

    【讨论】:

    • 当我写这个问题时,我并没有真正弄清楚我想要什么,让我再试一次。我想设置我的用户自动获得新设计的特定日期和时间。我该怎么做?
    • 计划复制到应用服务器。
    【解决方案5】:

    添加到 Ferry 的回答和您的评论;

    您可以使用“?version=2.1”来代替“?dummy=randomvalue”。所以它会被缓存,但是当你改变设计时,你可以增加版本。

    【讨论】:

    • 向我的 url 添加参数并没有用最新的 javascript 更新我的浏览器
    • 您应该将参数添加到 javascript 文件的 url
    【解决方案6】:

    也许你可以看看 domino 如何控制 url 的缓存。

    http://www.ibm.com/developerworks/lotus/library/ls-resp_head_rules/

    【讨论】:

      【解决方案7】:

      NEwbs 的回答很好,但值得注意的是,在 Firefox 中,有一个非常有用的插件,来自 Chris Pederick,名为“web developer”,它允许您禁用缓存。

      http://chrispederick.com/work/web-developer/

      另一个真正有用的是 Firebug,它真是太棒了 - 它使任何 HTML 工作变得更加容易

      https://addons.mozilla.org/en-US/firefox/addon/firebug/

      【讨论】:

        【解决方案8】:

        我确实找到了另一个解决方案,将我的 css 和 js 放在一个主题中,很容易重命名文件。

        如此处所述 http://goo.gl/vFTii

        【讨论】:

          【解决方案9】:
          Why do not we use the window.location.reload()...
          
          Which does the same like ctrl+F5
          
          It reloads the page, which is similar to context.reloadpage 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-24
            • 1970-01-01
            • 1970-01-01
            • 2012-06-16
            • 1970-01-01
            • 2023-03-14
            相关资源
            最近更新 更多