2011-10-19 7 views

Odpowiedz

7

Może to sprawić, że strona/obraz/cokolwiek nie zostanie pobrana z pamięci podręcznej użytkownika. Jeśli link jest inny za każdym razem, przeglądarka pobierze go z serwera, a nie z pamięci podręcznej, upewniając się, że jest to najnowsza wersja.

Może to być również śledzenie postępów ludzi w witrynie. Najlepiej wyjaśnić to krótką historią:

  1. Użytkownik odwiedza witrynę example.com. Wszystkie linki mają taką samą liczbę losową (powiedzmy 4).
  2. Użytkownik otwiera łącze w nowym oknie/zakładce, a link to page2.php? Rnd = 4. Wszystkie łącza na tej stronie mają losową liczbę 7.
  3. Użytkownik może kliknąć łącze do strony3.php z oryginalnej karty lub nowej, a oprogramowanie analityczne na serwerze może określić, czy ma ono rnd = 4 lub rnd = 7.

Wszystko, co możemy zrobić, to zasugerować możliwości. Nie ma jednego standardowego powodu, aby umieścić rnd = w adresie URL i nie możemy znać motywów projektanta strony internetowej, nie widząc oprogramowania serwera.

4

To prawie zawsze w przypadku pomijania pamięci podręcznej.

6

Internet Explorer i inne przeglądarki odczytują adres URL obrazu, pobierają obraz i zapisują go w pamięci podręcznej.

Jeśli aplikacja ma regularnie aktualizować obraz, a użytkownicy nie powinni widzieć obrazu w pamięci podręcznej, adres URL musi być niepowtarzalny za każdym razem.

Dlatego dodanie losowego ciągu znaków gwarantuje, że będzie to unikatowe i pobierane do pamięci podręcznej za każdym razem.

2

Jak sugerowali inni. Tego rodzaju zachowanie jest zwykle używane w celu uniknięcia problemów z buforowaniem podczas wywoływania strony, która zwraca dane dynamicznej zawartości.

Załóżmy na przykład, że masz stronę, która pobiera aktualne informacje o użytkowniku, takie jak "mysite.com/CurrentUserData". Po pierwszym wywołaniu tej strony dane użytkownika zostaną zwrócone zgodnie z oczekiwaniami, ale w zależności od ustawień czasu i buforowania drugie połączenie może zwrócić te same dane - nawet jeśli oczekiwane dane mogły zostać zaktualizowane.

Głównym powodem buforowania jest oczywiście optymalizacja prędkości częstego żądania. Ale w przypadku, gdy nie jest to pożądane, dodanie losowej wartości jako parametru ciągu zapytania jest powszechnie stosowane.

Istnieją jednak inne sposoby na obejście tego problemu. Na przykład, jeśli wykonywałeś żądanie Ajax za pomocą javascript/JQuery. Możesz ustawić pamięć podręczną jako fałszywą w rozmowie ...

$.ajax({url: 'page.html', cache: false}); 

można również zmienić dla wszystkich wywołań stron po załadowaniu dokumentu za pomocą ...

$.ajaxSetup({cache: false}}); 

Jeśli było zrobić aplikację MVC, można nawet wyłączyć buforowanie na temat metod działania Sterowanie za pomocą atrybutu jak tak ...

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult NonCacheableData() 
{ 
    return View(); 
} 

(dzięki szybkiego kopiowania i wklejania od here)

Śmiem twierdzić, że istnieją również ustawienia w IIS, które można zastosować, aby uzyskać ten sam efekt - chociaż nie byłem jeszcze tak daleko.