Angular Очистка кэша браузера не работает - PullRequest
0 голосов
/ 24 марта 2020

Мой angular 7 веб-сайт, насколько мне известно, имеет все методы очистки кэша, но все же есть несколько пользователей, которые не получают новую версию сайта каждый раз, когда я делаю релиз.

Я поместил тест в файл индекса. html, чтобы он вызывал веб-службу для регистрации сообщения, и когда я выпускаю новую версию веб-сайта с другим сообщением в индексе. html, я все еще вижу старое сообщение в журнале. Похоже, что это iPhone в Safari 12 и 13 в соответствии с подробностями агента пользователя.

Я менял URL каждый раз, когда делал релиз, чтобы браузеры могли загружать новый файл, и это работает, но это не решение, которое я могу поддерживать в долгосрочной перспективе.

Есть ли что-нибудь еще, что я могу сделать для обеспечения индекса. html не кэшируется? Сгенерированные файлы. js имеют уникальный добавленный суффикс (например, main.5ca2af62205176640ee1. js), а заголовки ответа http включают заголовок no-cache.

Я использую IIS 8.

Это мой web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
    </staticContent>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="./index.html" />
        </rule>
      </rules>
      <outboundRules>
        <rule name="RewriteCacheControlForHTMLFiles" preCondition="FileEndsWithHtml">
          <match serverVariable="RESPONSE_Cache_Control" pattern=".*" />
          <action type="Rewrite" value="max-age=0" />
        </rule>
        <preConditions>
          <preCondition name="FileEndsWithHtml">
            <add input="{REQUEST_FILENAME}" pattern="\.html$" />
          </preCondition>
        </preConditions>
      </outboundRules>
    </rewrite>    
  </system.webServer>
</configuration>

А это раздел моего angular. json файла:

  "architect": {
    "build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        "outputPath": "dist/myoutputdir",
        "index": "src/index.html",
        "main": "src/main.ts",
        "polyfills": "src/polyfills.ts",
        "tsConfig": "src/tsconfig.app.json",
        "assets": [
          "src/favicon.ico",
          "src/assets",
          "src/web.config",
          {
            "glob": "**/*",
            "input": "./node_modules/leaflet/dist/images",
            "output": "leaflet/"
          }
        ],
        "styles": [
          "src/styles.scss",
          "node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss",
          "node_modules/@fortawesome/fontawesome-free/scss/solid.scss",
          "node_modules/@fortawesome/fontawesome-free/scss/regular.scss",
          "node_modules/@fortawesome/fontawesome-free/scss/brands.scss",
          "node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss",
          "node_modules/angular-bootstrap-md/scss/mdb-free.scss",
          "node_modules/leaflet/dist/leaflet.css"
        ],
        "scripts": [
          "node_modules/chart.js/dist/Chart.js",
          "node_modules/hammerjs/hammer.min.js"
        ],
        "es5BrowserSupport": true
      },
      "configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ],
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true,
          "budgets": [
            {
              "type": "initial",
              "maximumWarning": "2mb",
              "maximumError": "5mb"
            }
          ]
        }
      }
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...