浏览器刷新后,angularjs代码更改不会显示

时间:2015-02-04 00:43:48

标签: angularjs html5 visual-studio-2013

任何时候,我在.hmtl文件或.js文件中进行代码更改,浏览器仍会呈现旧代码,并且我的新代码更改不会显示在浏览器结果中。

例如,我在.html文件中添加以下两行代码。

    <div class="control-group">
        <label class="control-label">First Name</label>
        <div class="controls readonly">
            {{profile.FirstName}}
        </div>
    </div>

    <div class="control-group">
        <label class="control-label">Last Name</label>
        <div class="controls readonly">
            {{profile.LastName}}
        </div>
    </div>

然后我执行以下操作:

  1. 在VS2013中,右键单击我的项目并在浏览器中查看(IE或Chrome)。
  2. 登录我的应用程序。
  3. 转到相应的页面,我看到旧的html文件的渲染。我没有看到新添加的2 div元素。
  4. 我甚至点击f5刷新浏览器但仍然没有运气。
  5. 我做错了什么?

18 个答案:

答案 0 :(得分:47)

在浏览器中按F12以显示开发人员工具。禁用缓存。重新加载您的页面。

答案 1 :(得分:21)

除了使用Dev Tools确保禁用缓存之外,您还可以编辑Web.config文件并告诉IIS不要缓存Angular文件:

<configuration>

  <!-- Disable IIS caching for directories containing Angular templates and scripts -->
  <location path="app">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache"/>
      </staticContent>
    </system.webServer>
  </location>

...
</configuration>

我的Angular根目录是app/。您可能需要根据文件结构进行修改。

答案 2 :(得分:7)

仅限TypeScript!

在tsconfig.json中添加...

var inProgress = filteredEvents.Where(fe => fe.Key.EventStatusKey == InProgress)
                               .SelectMany(g => g);

答案 3 :(得分:5)

尝试使用开发工具禁用缓存:

https://developer.chrome.com/devtools/docs/settings#general

答案 4 :(得分:2)

在chrome中打开devTools并选择Network选项卡,在Network选项卡中取消选中Disable cache并重新加载页面。

答案 5 :(得分:1)

就我而言,Angular.json文件"deployUrl"中的问题:应该是相对路径,例如"/support/yourpagenam/bundle/dist/" 因此,对Angular文件所做的任何更改都不会反映到浏览器。

答案 6 :(得分:1)

从源代码中的clientApp文件夹中删除dist文件夹解决了我的问题,并且再次开始自动刷新

答案 7 :(得分:1)

我只是在Visual Studio中删除了dist文件夹,它再次自动刷新。

****这是针对Angular 7 ***

答案 8 :(得分:1)

您需要运行命令yarn webpack:build来重新编译客户端代码。否则,.HTML.json.ts文件中的修改/更新将不会被反映。

答案 9 :(得分:1)

在镀铬机中按F12&gt;转到网络标签&gt;禁用缓存

enter image description here

答案 10 :(得分:1)

您需要将aspnetcore环境变量从生产更改为开发。来自official website

...设置一个环境变量,告诉ASP.NET在开发模式下运行:

  • 如果您在Windows中使用PowerShell,请执行$ Env:ASPNETCORE_ENVIRONMENT =&#34;开发&#34;
  • 如果您在Windows中使用cmd.exe,请执行setx ASPNETCORE_ENVIRONMENT&#34;开发&#34;,然后重新启动命令提示符以使更改生效
  • 如果您使用的是Mac / Linux,请执行导出ASPNETCORE_ENVIRONMENT =开发

如果您使用的是Linux,则可能需要以超级用户身份进行操作。即。

sudo export ASPNETCORE_ENVIRONMENT=Development

重新启动后,变量的值可能会恢复为Production。如果您想使用多个环境,我建议您在launchSettings.json文件中定义它们:

{
      "iisSettings": {
      "windowsAuthentication": false,
      "anonymousAuthentication": true,
      "iisExpress": {
         "applicationUrl": "http://localhost:40088/",
         "sslPort": 0
      }
   },
     "profiles": {
       "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
          }
       },
       "IIS Express (Staging)": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Staging"
         }
       }
     }  
   }

了解环境here

答案 11 :(得分:1)

对我来说,之前的答案都没有奏效。我使用的是Chrome,我能够查看更新的唯一方法是打开一个隐身窗口。我的常规浏览器窗口由于某种原因,不会获得最新的资产。

我已经尝试清除缓存,禁用devtools上的缓存和硬刷新,但无济于事。我能够修复它的唯一方法是清除DNS缓存。这是一个包含更多细节的链接:

How to Clear the DNS Cache on Computers and Web Browsers

使用命令行,您可以按照以下方式进行操作:

Windows 7&amp;较早

ipconfig /flushdns

Windows 8

ipconfig /flushdns

OSX(Yosemite,El Capitain和Sierra)

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

答案 12 :(得分:1)

或者您可以在Visual Studio 2013中使用Browserlink自动重新加载页面

http://www.asp.net/visual-studio/overview/2013/using-browser-link

答案 13 :(得分:0)

设置HTTP响应标头以通过IIS管理器使内容过期。

  1. 为您的网络应用程序打开 HTTP响应标题模块
  2. 点击操作窗格
  3. 中的设置常用标题

    Set HTTP Response headers to expire

    https://www.iis.net/configreference/system.webserver/staticcontent/clientcache

答案 14 :(得分:0)

我在隐身模式下打开了链接,因为在该模式下,缓存被禁用,而Voila起作用了。

答案 15 :(得分:0)

这是因为浏览器存储了缓存。在运行应用程序之前,您可以删除浏览器存储的缓存和cookie。

答案 16 :(得分:0)

问题

  • dev enviornment中的静态文件的客户端(浏览器)缓存
  • 服务器端(IIS Express)缓存dev enviornment中的静态文件

解决方案

<强> For Client-side (Browser) caching of static files in dev enviornment

  • Web.Config / ApplicationHost.config Approch:Web.config方法 @NateBarbettini建议上面。请注意,这种方法是 也可以应用于'Applicationhost.config'而不是web.config 文件。
  • “始终从服务器刷新”,如@Phil Degenhardt所述,如上所述。请在下面找到截图。 enter image description here
  • 导航到浏览器地址栏中的源文件位置:尝试通过键入地址导航到相关的JavaScript文件。它会显示JavaScript文件内容。执行此操作后,文件会更新。因此,您可以再次返回并尝试导航到应用程序的正确登录页面。这一次,您将看到最新的JavaScript代码被执行。 例如如果您在更新'app / home / home-account.js'时遇到问题。然后在浏览器中导航到'http://[your-host/localhost]:[specified port of your application]/app/home/home-account.js。这将显示内容。然后再次导航到您的应用程序的主页,即在这种情况下'http://[your-host/localhost]:[specified port of your application]/'

<强> For Server-side (IIS-Express) caching of static files in dev enviornment

  • 访问IIS Express appcmd命令行实用程序。在我的例子中,appcmd位于“C:\ Program Files(x86)\ IIS Express \ appcmd.exe”这个路径中。然后使用SITE listSITE delete命令删除iisexpress中缓存的临时文件。

  • 还有一个特定于此处提到的IE的解决方案: Visual Studio 2013 caching older version of .js file

答案 17 :(得分:0)

只需右键单击浏览器上的页面重新加载按钮,然后选择“清空缓存并强制重新加载”