Как да предотвратим кеширането на swf файлове

И така историята продължава… След като ми омръзна да обяснявам на всеки втори потребител защо все още не вижда промените по своя уеб сайт и след като дори ме обвиниха в лъжа, реших да подходя кардинално по въпроса с кеширането.

Казано на възможно най-прост език, кеширането е измислено, за да се ускори разглеждането на уеб страниците (от времената, когато все още се използваше dial-up). Преди да направи заявка за дадена информация към сървъра, браузърът проверява дали тази информация не е била вече зареждана.  Ако е била, тя може да се зареди от кеша. Tова, от една страна осигурява бързина, а от друга – неприятни изненади – ако информацията междувременно е била променена.

За съжаление, не е възможно да се предвиди кога точно един браузър ще покаже обновената информация – това зависи от самия браузър, от настройките на потребителя, дори от сървъра.

Когато става въпрос за текстове или изображения, натискането на най-обикновен F5 или Ctrl+F5 помага. При зареждането на флаш файлове, най-сигурният начин е изчистването на кеша (което при различните браузъри става по-различен начин, но има еднакъв ефект).

Уви, не е възможно да обясняваш на куцо и сакато как да си изчисти кеша. Какво може да се направи в такъв случай?

1. Добавяне на HTML тагове:

<meta http-equiv=“Expires“ content=“Thu, 01 Dec 1994 16:00:00 GMT“>
<meta http-equiv=“Pragma“ content=“no-cache“ />
<meta http-equiv=“Cache-Control“ content=“no-cache“ />

2. С PHP хедъри:

header(„Content-Type: text/html; charset=utf-8“);
header(„Expires: Thu, 01 Dec 1994 16:00:00 GMT“);
header(„Last-Modified: „. gmdate(„D, d M Y H:i:s“). “ GMT“);
header(„Cache-Control: no-cache, must-revalidate“);
header(„Cache-Control: post-check=0, pre-check=0“, false);
header(„Pragma: no-cache“);

3. Използването на фалшив параметър с уникална стойност, предаван към флаша.

myflash.swf?p=<?=microtime();?>

Ако флаш файловете използват функции за зареждане на външни данни (LoadVars, loadVariables, loadMovie, getURL), тогава е необходимо да се предава фалшивия параметър при всяко извикване на тези функции.

var unique=new Date().getTime();
loadMovie(„myflash.swf?unique=“+unique,_root.container);

 

Все пак, ако не желаете файловете да се зареждат отново и отново вовеки веков, може да се направи проверка и след определен брой дни да не се изпълнява добавянето на параметъра.

Advertisements

Етикети:

2 Коментари to “Как да предотвратим кеширането на swf файлове”

  1. Hamaelleon Says:

    Потърсих дали има нещо друго по темата web програмиране, но уви, не намерих.. или?

  2. waterfairy Says:

    Имаш предвид в блога ми? Не, засега няма, по принцип първоначалната ми идея за блога не включваше професионални теми. Но пък от време на време изниква нещо, което си струва да се запише. Иначе материали има навсякъде 🙂

Вашият коментар

Попълнете полетата по-долу или кликнете върху икона, за да влезете:

WordPress.com лого

You are commenting using your WordPress.com account. Log Out / Промяна )

Twitter picture

You are commenting using your Twitter account. Log Out / Промяна )

Facebook photo

You are commenting using your Facebook account. Log Out / Промяна )

Google+ photo

You are commenting using your Google+ account. Log Out / Промяна )

Connecting to %s


%d bloggers like this: