Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Добавить время кэширования для информера в iframe


Автор: tenmet 18.8.2012, 16:24
Такой вопрос, информеры со сторонних сайтов добавляю в новую страницу и ставлю в iframe. Но оказалось, что при перезагрузке страницы iframe не обновляется, картинка информера постоянно старая. 
Добавил math.random() , получилось .png? + Math.random() +  проблема с необновлением решилась, но картинка теперь генерируется  при каждом переходе по сайту.  Можно как-то сделать так, чтобы посетителю при заходе отдавалась новая картинка, и при последующих переходах по сайту сайта она уже бралась из кэша, а время кэша, скажем - минут 5.
В общем - нужно кэшировать информер в iframe на определенное время.

Автор: ksnk 18.8.2012, 22:18
tenmet, И кто мешает формировать ссылку в png? + XXX из времени, округленном до ближайших 5 минут?


Автор: tenmet 19.8.2012, 00:04
Можно поподробнее, как это правильно записать? 

Автор: ksnk 19.8.2012, 01:02
метод getTime возвращает 
Цитата

Return the number of milliseconds since 1970/01/01

в 5 минутах этих милисекунд 5*60*1000 = 300000

так что, как-то так

Код

function get300000ms(){
  var d= new Date();
  return ((d/300000).toFixed(0)); //*300000 ;
}
alert('php?'+get300000ms())

Автор: tenmet 19.8.2012, 10:22
Большое спасибо, все получилось, только увеличил время до 600 тыс, а то как-то мало получалось.
А если ставить, к примеру, 60 тыс, т.е 1 минуту, то он криво работал, генерировал картинку, после второго перехода почему-то еще одну, и только потом делал перерыв секунд на 10, никакой минуты. 
Если 300 или 600 тыс, то все хорошо, генерирует картинку только 1 раз, правда с временем все равно мудрит))

Автор: ksnk 19.8.2012, 11:00
tenmet, Там трюк-то простой. Округляется значение милисекунд до какого-то ближайшего кратного 5 минутам(300к) значения. Никакой привязки к реальному времени не остается. Так что примерно в 50% случаев вторая картинка будет обновлятся через 2,5 минуты. 
А вот третья регенерация изображения произойдет уже действительно через 5 минут после второй.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)