Jak zmusić debuger skryptów Chrome do ponownego ładowania javascript?

244

Naprawdę podoba mi się możliwość edytowania javascript w debuggerze chrome, jednak uważam, że może być bardzo problematyczne przy ponownym pobieraniu JavaScript z serwera.

Czasami muszę posunąć się tak daleko, jak tylko zamknięcie debugera i ponowne załadowanie ramki działa OK - ale innym razem (dI nie mogę ustalić, w jakich warunkach to nastąpi) muszę wyczyścić moją tymczasową pamięć podręczną. Czasami przysięgam, że muszę całkowicie zamknąć chrome, następnie wyczyścić pamięć podręczną, a następnie załadować stronę, zanim debugger w końcu pokaże mi najbardziej aktualny skrypt.

(Uwaga. Serwer nie buforuje skryptu)

Zastanawiałem się, czy ktoś wiedział o szybkim i łatwym sposobie powiedzenia debuggerowi, aby unieważnił cały skrypt javascript i ściągnął go na nowo po przeładowaniu strony?

Chris Fewtrell
źródło
1
Czasami muszę nawet ponownie uruchomić IIS Express, aby poprawnie załadować.
Chris O

Odpowiedzi:

330

Podczas opracowywania skryptu spróbuj wyłączyć pamięć podręczną Chrome.

Po ponownym załadowaniu strony JavaScript powinien zostać odświeżony.


Chrome około 2011 r

Otwórz ustawienia Wyłącz pamięć podręczną


Chrome około 2018 roku

Otwórz ustawienia Wyłącz pamięć podręczną

Możesz również uzyskać do niego dostęp na karcie sieci:

Karta Sieć

adrianbanks
źródło
8
Czy to dotyczy cały czas, czy tylko wtedy, gdy debugger jest otwarty?
PilotBob
7
tylko wtedy, gdy Narzędzia deweloperskie są otwarte
Karolis
11
Miałem ten zestaw przez cały czas, a teraz nagle utknąłem z pewną teczką. Czy ktoś znajdzie rozwiązanie?
IronicMuffin
5
To tylko dodało kilka lat do mojego życia. Próbowałem CMD + SHIFT + R, ale to nie zrobiło tego. Dzięki
Kevin Zych
7
Dla tych, którzy ostatnio przychodzą na to pytanie, pamiętaj, że menu ustawień jest wyłączone z menu trzech pionowych kropek w Narzędziach programisty. Tam możesz zaznaczyć pole, aby wyłączyć pamięć podręczną.
Scott C Wilson
136

wprowadź opis zdjęcia tutaj

Menu kontekstowe pokazane powyżej jest dostępne po kliknięciu prawym przyciskiem myszy / naciśnięciu i przytrzymaniu przycisku „przeładuj”, podczas gdy Chrome Dev Tools jest otwarty .

Pusta pamięć podręczna i twarde przeładowanie działają najlepiej dla mnie.

Kolejna zaleta: ta opcja utrzymuje nietknięte wszystkie inne otwarte karty i dane witryny. Przeładowuje tylko i czyści bieżącą stronę.

Bishoy Hanna
źródło
5
Jest to przydatne zwłaszcza dlatego, że łatwo je wyjaśnić. Miałem problem z tym, że klient nie widział modyfikacji dokonanej na jego stronie internetowej. Naciśnij F12, a następnie kliknij prawym przyciskiem myszy przycisk przeładowania, wybierz Opróżnij pamięć podręczną i Przeładuj ponownie. Skończyłem, dzięki temu komentarzowi :-)
Gull_Code
To najlepsza funkcja chromu :), w każdej chwili kolego.
Bishoy Hanna
1
Dzięki! Próbowałem dowiedzieć się, dlaczego przycisk Przeładuj czasami wyświetlał mi menu, a czasem nie.
iconoclast
1
Nie miałem problemów z Ctrl + Shift + R podczas przeładowywania plików JavaScript, ale nie przywróciło to zaktualizowanej zawartości, która była wyświetlana w plikach HTML. Pusta pamięć podręczna i twarde przeładowanie załatwiły sprawę.
S. Baggy
Najlepszy sposób, aby to zrobić, użyj tej pustej pamięci podręcznej i twardego przeładowania
hoogw
34

Zawsze możesz wyczyścić określony plik, wykonując następujące czynności:

  1. Otwórz narzędzia deweloperskie
  2. Kliknij kartę Źródła
  3. Znajdź swój skrypt / obraz / plik
  4. Sprawdź prawy panel, aby sprawdzić, czy plik jest aktualny

Jeśli nie:

  1. Kliknij zasób prawym przyciskiem myszy w lewym panelu i wybierz „Otwórz link w nowej karcie”
  2. Wymuś przeładowanie zasobu za pomocą powyższych metod. (Zobacz przykład @Bishoy Hanny)

Jest to bardzo przydatne, jeśli masz zasoby w ramkach i CTRL+F5nie wymusza ich odświeżania.

Steve Tauber
źródło
1
prawdziwe. naciśnięcie CTRL + F5 = Wyczyść odświeżanie pamięci podręcznej bieżącej strony
STEEL
Nie mam karty Zasoby.
Mike W
@MikeW został przemianowany na Sources - Zaktualizowałem odpowiedź
Steve Tauber
12

Shift+ F5szybko usuwa pamięć podręczną.

Peter Kelly
źródło
18
ctrl-f5 nie obciąłem musztardy, obawiam się. Stary plik javascript pozostaje w debugerze.
Chris Fewtrell,
9

W przypadku Google Chrome nie jest to Ctrl+ F5. To Shift+, F5aby wyczyścić bieżącą pamięć podręczną! Mi to pasuje !

RPDeshaies
źródło
Czemu ? Nie rozumiem, jaka jest różnica między tym a komentarzem. Na końcu najbardziej przydatne pytanie pojawi się na górze postu.
RPDeshaies
2
Pytający w żadnym momencie nie wspominał Ctrl-F5 , więc z definicji twoja odpowiedź nie jest odpowiedzią na pytanie zadane przez pytającego, jest raczej komentarzem , poprawką do odpowiedzi innych ludzi i powinna być tak traktowana.
Edward
9

Oto skrót do DevTools:

  1. F12 aby otworzyć Chrome DevTools
  2. F1 aby otworzyć Ustawienia DevTools
  3. Zaznacz Wyłącz pamięć podręczną (gdy DevTools jest otwarte), jak pokazano poniżej:

wprowadź opis zdjęcia tutaj

Uwaga: Zaktualizowano zgodnie z komentarzem Dimi. Zwykle go przenoszą, więc daj mi znać lub zaktualizuj post, jeśli zauważysz, że został zmieniony.

Tony L.
źródło
3

W systemie Windows Ctrl+ Shift+ rwymusiłoby ponowne załadowanie skryptu w chrome.

Vijay Nandwana
źródło
2

Jeśli wprowadzasz lokalne zmiany w javascript w Narzędziach dla programistów, musisz upewnić się, że WYŁĄCZYĆ te zmiany przed ponownym załadowaniem strony.

Na karcie Źródła, przy otwartym skrypcie, kliknij skrypt prawym przyciskiem myszy i wybierz opcję „Modyfikacje lokalne” z menu kontekstowego. Spowoduje to wyświetlenie listy skryptów, w których zostały zapisane modyfikacje. Jeśli zobaczysz go w tym oknie, Narzędzia dla programistów zawsze zachowają lokalną kopię zamiast odświeżać ją z serwera. Kliknij przycisk „Cofnij”, a następnie odśwież ponownie, a otrzymasz nową kopię.

Steve K.
źródło
1

Wygląda na to, że debuger Chrome ładuje pliki źródłowe do pamięci i nie pozwala im odejść pomimo aktualizacji pamięci podręcznej przeglądarki, tzn. Ma swoją własną pamięć podręczną oprócz pamięci podręcznej przeglądarki, która nie jest zsynchronizowana. Przynajmniej tak jest w przypadku pracy ze źródłowymi plikami mapowanymi (debuguję źródła maszynopisu). Po pomyślnym odświeżeniu pamięci podręcznej przeglądarki i sprawdzeniu jej, przeglądając bezpośrednio plik źródłowy, pobierasz zaktualizowany plik, ale jak tylko ponownie otworzysz plik w debuggerze, będzie on zwracał stary plik bez względu na wersję ze zwykłej pamięci podręcznej przeglądarki. Rzeczywiście bardzo denerwujące.

Uważam to za błąd w chrome. Używam wersji 46.0.2490.71 m.

Jedyną rzeczą, która pomaga, jest restart Chrome (zamknij wszystkie przeglądarki Chrome).

David Fahlander
źródło
0

Jeśli ładowane pliki są buforowane, a wprowadzone zmiany nie znajdują odzwierciedlenia w kodzie, istnieją 2 sposoby na poradzenie sobie z tym

  1. Wyczyść pamięć podręczną, jak wszyscy mówili

  2. Jeśli chcesz Cache i tylko pliki muszą zostać ponownie załadowane, możesz przejść do karty sieciowej narzędzia programistycznego i wyczyścić wszystko, co zostało załadowane. następnym razem nie załaduje go z pamięci podręcznej. będziesz mieć swoje najnowsze zmiany.

iamshravan
źródło
0

Jeśli prowadzisz lokalny serwer na Apache, możesz uzyskać coś, co wygląda jak problemy z buforowaniem. Stało się tak, gdy miałem serwer Apache działający pod Vagrant (w virtualbox).

Wystarczy dodać następujące wiersze do pliku konfiguracyjnego ( /etc/httpd/conf/httpd.conflub równoważnego):

#Disable image serving for network mounted drive
EnableSendfile off

Pamiętaj, że warto przeszukać plik konfiguracyjny, aby sprawdzić, czy EnableSendfilejest ustawiony ongdziekolwiek indziej.

MattCochrane
źródło
0

Istnieją również 2 (szybkie) obejścia:

  1. Użyj debugowania wile w trybie incognito, zamknij okno i otwórz je ponownie.
  2. Usuń historię przeglądania
Vladimir verleg
źródło
0

Dezaktywacja punktów przerwania spowodowała załadowanie nowego skryptu.

Mike W.
źródło
0

Moim zdaniem najłatwiej jest pracować w „prywatnej sesji przeglądania” chrome, aby upewnić się, że pliki javascript nie pochodzą z pamięci podręcznej.

szkocki
źródło