使用Apache和Angular重新加载页面(不是从缓存中)的最佳方法

时间:2018-10-09 16:52:23

标签: angular apache web caching

我创建了Angular 6应用,并使用Apache在远程服务器上托管了它。 使用ng build --prod创建了一个版本。

我注意到在进行更改和更新html文件时-该页面是从缓存加载的,而不是从Apache文件夹中放置的文件的新版本加载的(使用Apache中的默认配置,而在Meta标签中则没有使用HTML页面)。

如何仅在同一页面有新版本时才在客户端浏览器上强制重新加载页面? (对现有网站的新更改)

最佳做法是什么?

4 个答案:

答案 0 :(得分:1)

我猜您是在为生产环境而不是出于开发目的问这个问题。

如果是这种情况,则可以检查以下内容:

  1. index.html文件未更新。

  2. 检查在浏览器上设置的缓存过期时间。它必须是no-cache

  3. 如何生成构建代码。如果使用angular-cli,则ng build将创建一个带有哈希值的块名称,每次更改内容时它都会不同。

  4. 检查延迟加载模块的缓存头

答案 1 :(得分:0)

构建时,请执行以下操作:

ng build --output-hashing=all

这应该防止缓存更改的文件。

答案 2 :(得分:0)

您可以使用AOT Production版本,默认情况下启用散列。

ng build --prod

答案 3 :(得分:0)

在使用生产版本ng build --prod时,cli将创建一个捆绑包,其中每个哈希文件都附加了哈希值。因此,如果您确保未缓存索引,则它将引用带有哈希值的文件。如果文件未更改,则其哈希将相同,因此将从缓存中加载它们。如果它们更改了,它将尝试加载新文件。

剩下的就是要确保没有缓存index.html文件,这可以通过发送no-cache标头或使用动态文件(例如php,jsp等)代替*来完成。 .html。