【问题标题】:How to continuously deploy a web app when caching is enabled?启用缓存时如何持续部署 Web 应用程序?
【发布时间】:2014-05-15 14:28:00
【问题描述】:

在我们的网络应用程序中,我们有一个包含许多组件的网页,每个组件都使用数据库中的数据进行渲染,服务器端缓存用于存储生成的组件以供将来请求使用。我们还为整个页面维护了一个全局的“最后修改”时间戳,这是最后一次更改此 Web 上的任何数据(数据库中),如果浏览器缓存有新版本,我们将返回 304 HTTP 响应。

总之,我们同时使用服务器端缓存和客户端缓存来提高性能。

在我们考虑部署新代码之前,这一切都很好。当部署新代码(比如 html)时,不仅客户端缓存无效,服务器端缓存也必须被清除。我们必须将上次修改时间设置为我们的代码部署时间,并清除服务器端缓存中的所有内容。 如果我们定期部署代码,这不是很理想。由于页面的数据库中的数据不会定期更改,因此我们希望缓存可以长时间工作。但是部署新代码违背了我们的目的。

在这种情况下我们应该怎么做?这里有任何“行业最佳实践”吗?

【问题讨论】:

    标签: caching web deployment continuous-integration memcached


    【解决方案1】:

    对于我的项目,当我更改文件(例如 css 文件)时,我会在文件所在的位置添加一个参数。例如,

    <link href='default.css?1' type='text/css' rel='stylesheet'>
    

    并在每次您希望重新加载文件而不是从缓存中提取文件时更改数字。

    【讨论】:

    • 是的,这适用于 js 和 css 标签。我关心的主要是动态 html 和内联 js,看到缓存级别因少量代码更改而失效,这令人沮丧。
    • 许多打包器为此使用 CSS 或 JS 文件的哈希
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多