【问题标题】:Resources not loaded from cache未从缓存加载的资源
【发布时间】:2016-12-16 15:23:00
【问题描述】:

我尝试从我的 Web 应用程序中缓存一些文件。目前我使用 grunt 将版本放在我的资源上:myFile.js?

但在 Chrome 控制台中,我可以看到它不是从缓存中加载的:

这是我的 index.html :

<head>
    <!-- Meta -->
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="mobile-web-app-capable" content="yes">

    <!-- Infos -->
    <link rel="icon" sizes="192x192" href="FrontEnd/Ressources/img/logo-app.png" />
    <link rel="shorcut" sizes="192x192" href="Ressources/img/logo-app.png" type="image/x-icon" />
    <link rel="apple-touch-icon" href="FrontEnd/Ressources/img/logo-app.png" />

    <!-- Javascript -->
    <script src="FrontEnd/Ressources/js/XXXX.min.js?ver=@@XXXX-source-version"></script>
    <script src="FrontEnd/config.js?ver=@@XXXX-source-version"></script>

    <!-- CSS -->
    <link rel="stylesheet" media="screen" type="text/css" href="FrontEnd/Ressources/css/XXXX.min.css?ver=@@XXXX-source-version" />
</head>

我怎样才能减少加载时间?它是从缓存中加载的吗(可能像这个文件)?

【问题讨论】:

  • 这看起来更像是一个时间戳,而不是一个“真实”的版本号。您是否在对嵌入这些资源的页面的后续请求中验证了此值保持不变
  • 是的,它是一个时间戳值,但是每次构建我的项目时这个值都是固定的。我正在预生产环境中进行测试。我确信这个值仍然存在。
  • 检查 HTTP 响应标头。也许您的底层服务器没有正确设置以首先生成必要的标头? (我在考虑 Last-Modified、ETag、Expires 等内容)

标签: javascript html angularjs caching cache-control


【解决方案1】:

您可以在 Google 中指定当开发工具打开时缓存被禁用。也许你已经检查过了?

-version 后缀可能是罪魁祸首,如果该数字因每个请求而更改,它将不会被缓存。这就是该后缀的唯一目的:使 url 唯一并禁止从缓存中加载过时的版本。如果相同,则应该缓存。

我个人检查非开发人员机器上的缓存或启动未调整的 VM。这样我确信这是一个更正常的环境,例如一个没有调整为尽可能少缓存的环境。

【讨论】:

  • “禁用缓存”复选框未选中,我确定 -version 后缀仍然相同
  • @Alexandre:也许是个愚蠢的问题,但你是如何测试这个的?你是如何刷新页面的?当您让页面加载并使用工具栏中的按钮刷新几次时会发生什么?顺便说一句,您使用什么设置? (客户端+服务器)
  • 我使用 chrome 并使用“CTRL+F5”刷新我的页面。我的网站在 WIN SRV 2012 R2 和 IIS 上
猜你喜欢
  • 1970-01-01
  • 2015-02-15
  • 2011-08-04
  • 1970-01-01
  • 2020-04-05
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多