2013-06-06 5 views
4

이것은 내가 무식하게 들리면 나에게 실례하기 전에 다룰 수 없었던 것입니다.브라우저 캐시를 자동으로 새로 고침

기본 문제는 Visual Studio 2010에서 작업하는 동안 변경 사항이 일종의 캐시에서 발견되는 것입니다.

예를 들어 페이지를 변경하고 솔루션을 실행 한 다음 Ctrl + F5를 눌러 캐시를 새로 고쳐 변경 사항을 확인해야합니다. 이것은 ASP.NET/HTML/CSS & JavaScript 코드입니다. 같은 것.

과거 비주얼 스튜디오는 매번 실행될 때마다 캐시를 ​​지우는 데 사용 되었기 때문에 나는 거의 말하기가 거의 좌절했습니다.

또한 IIS 서버에 솔루션을 배포 할 때 사용자에게도 동일한 문제가 발생합니다. ASP.NET 페이지에 변경 사항이 있어도 사용자는 캐시를 지울 때까지 캐시 된 버전을 계속 가져옵니다. 필자는 버전 번호로 파일 (특히 자바 스크립트)의 이름을 변경하여이 문제를 완화하여 클라이언트가 항상 새로운 파일로보고 캐시에서로드하는 대신로드합니다.

Visual Studio 또는 web.config에서이 문제를 일으킬 수있는 설정이 있습니까?

편집은 : 여기 내 web.config 파일의

<configuration> 
    <system.web> 
    <sessionState cookieless="UseCookies" timeout="1440" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/> 
     <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/> 
     <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/> 
     </assemblies> 
    </compilation> 
    <authentication mode="Windows"/> 
    <pages> 
     <controls> 
     <add tagPrefix="ajaxtoolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolKit"/> 
     </controls> 
    </pages> 
    </system.web> 
    <system.web.extensions> 
    <scripting> 
     <webServices> 
     <jsonSerialization maxJsonLength="50000000"/> 
     </webServices> 
    </scripting> 
    </system.web.extensions> 
</configuration> 

답변

5

웹 리소스 (CSS, JS, 이미지, 심지어 HTML)은 웹 페이지를로드하는 데 걸리는 시간을 증가 네트워크를 통해 다운로드 할 수있는 시간을 스티브 서더스 (Steve Souders)는 거의 80 %가 걸릴 것이라고 제안하고 있습니다 (here 참조). HTTP 캐싱을 사용하면 이러한 리소스를 브라우저 또는 프록시에서 저장하거나 캐시 할 수 있습니다. 리소스가 캐시되면 브라우저 또는 프록시는 이후에 웹 페이지를 방문 할 때 다시 다운로드하지 않고 로컬 캐시 된 복사본을 참조 할 수 있습니다.

브라우저 캐시가 HTTP 캐시 헤더에 의해 제어 될 수있다

그래서,이 때문에 비주얼 스튜디오 또는 asp.net의 아니지만, 때문에 브라우저의 (빠른 개요 here 참조).

서버 측 (테스트 용) 또는 클라이언트 측 (캐시를 다시 우회하고 우회)에는 캐시를 비활성화하는 여러 가지 방법이 있습니다. 테스트 목적으로 로컬에서이 작업을 수행 :이 코드를 명시 적으로 비활성화 브라우저 캐시가

// Stop Caching in IE 
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); 

// Stop Caching in Firefox 
Response.Cache.SetNoStore(); 

경고 할 수 asp.net

를 사용

: 여기

몇 가지 가능성이 있습니다 !

또한 번들링 시스템을 사용하면 캐시 설정을 제어 할 수 있습니다. asp.net mvc 번들은 번들이 만들어 질 때부터 HTTP 만료 헤더를 설정하고 쿼리 문자열에 additionalnal 매개 변수를 추가합니다. 번들이 변경되지 않는 한이 고유 식별자는 동일합니다. here을 참조하십시오.브라우저에

이 페이지를 다시로드 많은 단축키가 캐시를 우회 : exampel의 경우 :

  • 크롬 : 시프트 + 새로 고침 버튼
  • IE : Ctrl + F5 또는 Ctrl + 새로 고침 버튼
  • Firefox : Ctrl + Shift + R 또는 Shift + Reload

또한 브라우저에서 캐시를 완전히 비활성화하는 여러 가지 방법이 있습니다.

  • IE : 인터넷 옵션 ‣ 임시 인터넷 파일 ‣ 설정이 저장된 페이지
  • 크롬의 새 버전 확인 ‣ ‣ 도구 : 왼쪽에 도구 ‣ 개발자 도구 ‣ 톱니 바퀴 아이콘 ‣ 코너 해제 캐시
  • 파이어 폭스 : 도구 ‣ 옵션 ‣ 고급 ‣ 네트워크 ‣ 캐시 크기 = 0

Wikipedia has a great list.

+0

이것은 훌륭한 대답입니다! Internet Explorer에서 실제로 페이지의 새 버전을 찾지 않도록 설정된 설정을 찾을 수있었습니다. – yoshi0423

관련 문제