Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.09.2018, 14:22
Интересующийся
Отправить личное сообщение для dr.zoom Посмотреть профиль Найти все сообщения от dr.zoom
 
Регистрация: 17.09.2018
Сообщений: 10

Сообщение от laimas Посмотреть сообщение
dr.zoom, дело хозяйское, но вы хотите сделать почти такое - есть десятки изображений весом по N мегабайт, которые вы все грузите клиенту ради того, чтобы показать одно. Понятно, что это бесполезная трата ресурсов клиента.

Хотите чтобы клиент определял контент, ну так пусть определяет, а определение, это не выбор среди множества бесполезно загруженного, а асинхронный запрос указанного с сервера. И можете менять его по любому желаемому интервалу.
дело в том, что мне нужно ротировать рекламный блок при каждом обновлении странички и показывать разные материалы, будь то баннер, или код на javascript.

Как это лучше исполнить, я как раз и хочу тут у вас узнать. Помогите с кодом люди добрые
Ответить с цитированием
  #12 (permalink)  
Старый 18.09.2018, 14:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от dr.zoom
дело в том, что мне нужно ротировать рекламный блок при каждом обновлении странички
Это не означает, что эти блоки нужно все грузить клиенту, они как раз должны находиться на сервере. Причем рекламный блок не просто обновляется, там куча условий - число показов за определенное время, приоритеты, место отображения и т.п. А этим как раз заведует не клиент, а сервер.
Ответить с цитированием
  #13 (permalink)  
Старый 18.09.2018, 14:37
Интересующийся
Отправить личное сообщение для dr.zoom Посмотреть профиль Найти все сообщения от dr.zoom
 
Регистрация: 17.09.2018
Сообщений: 10

Сообщение от laimas Посмотреть сообщение
Это не означает, что эти блоки нужно все грузить клиенту, они как раз должны находиться на сервере. Причем рекламный блок не просто обновляется, там куча условий - число показов за определенное время, приоритеты, место отображения и т.п. А этим как раз заведует не клиент, а сервер.
я с вами не спорю, да пусть так и будет. ну а если скрипт будет тянуть одну строку с кодом из файлика data.dat к примеру.
Ответить с цитированием
  #14 (permalink)  
Старый 18.09.2018, 14:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Скрипт клиентский ни из какого файла ничего тянуть не может. В простейшем случае, клиентских усилий может и не потребоваться, если у клиента включены куки. В этом случае при запросе страницы сервер проверяет установлена ли кука у клиента, если нет, то он выводит первый блок (в файле ли он или это базой определяется, не важно, важно что сервер может получать данные любым способом), и устанавливает куку. Если кука установлена, то ее значение увеличивается, сохраняется в куках и уже это значение определяет какой блок выводить.

Что-то более сложное, это уже потребует клиентского сценария.
Ответить с цитированием
  #15 (permalink)  
Старый 18.09.2018, 14:51
Интересующийся
Отправить личное сообщение для dr.zoom Посмотреть профиль Найти все сообщения от dr.zoom
 
Регистрация: 17.09.2018
Сообщений: 10

я извиняюсь за свои скромные познания, точнее их отсутствие. вот ссылка на скрипт http://phphack.ru/seescript/788/

он меня в принципе устраивает, но я буду выводить через <script src="http://Ваш_адрес/rand_js.php?r=1"></script>

нужно только чтобы по порядку строки при ротации выводились, а не в случайном порядке. может кто то допилит код этого скрипта ?

черт, там кажется все на php (( глянул rand_js.php код (

я извиняюсь за сумбур

Последний раз редактировалось dr.zoom, 18.09.2018 в 15:05.
Ответить с цитированием
  #16 (permalink)  
Старый 18.09.2018, 15:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Какой язык использует сервер?
Ответить с цитированием
  #17 (permalink)  
Старый 18.09.2018, 19:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

laimas,
Сообщение от laimas
Какой язык использует сервер?
Судя по 15-му комментарию - PHP.
Ответить с цитированием
  #18 (permalink)  
Старый 18.09.2018, 19:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

<?php
//getBanner.php
$visit=isset($_COOKIE['visit'])?(int)$_COOKIE['visit']:0;
$directory=__DIR__.'/banners/';
if(!is_dir($directory))
  throw new \Exсeption("Directory [$directory] not found");

$banners=array_diff(scandir($directory),['.','..']);
$response=$directory.$banners[$visit%count($banners)];
$response=file_get_contents($response);
setcookie('visit',++$visit,time()+365*24*3600,'/');

echo $response;


//banners.js
[].filter.call(document.scripts,function(script){
  return !!script.src && script.src.indexOf('banners.js')>0;
}).forEach(function(script,index){
	if(index)
      return;
  
  var xhr=new XMLHttpRequest();
  xhr.open('GET','/path/to/getBanner.php?'+Math.random(),true);
  xhr.onload=function(){
  	script.insertAdjacentHTML('beforebegin',this.responseText);
  };
  xhr.send();
});


//index.html
<script src="/path/to/banners.js" async></script>


В директории, в которую положите файл "getBanner.php" создайте еще одну директорию с именем "banners", в нее накидайте файлов, контент которых - код вставляемых на страницу баннеров.
1 файл - 1 баннер.
В том месте, где расположите подключение js-скрипта появится код баннера.

PS. Код не тестировал. Вообще.

Последний раз редактировалось Nexus, 18.09.2018 в 19:12.
Ответить с цитированием
  #19 (permalink)  
Старый 18.09.2018, 19:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
throw new \Exсeption("Directory [$directory] not found");
Для кого?

Сообщение от Nexus
$banners=array_diff(scandir($directory),['.','..']);
glob()

А использование кук вообще исключает клиента, сервер сразу может вывести следующий баннер, зачем все эти навороты на JS?

Последний раз редактировалось laimas, 18.09.2018 в 19:44.
Ответить с цитированием
  #20 (permalink)  
Старый 18.09.2018, 20:04
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от laimas
Для кого?
Для обработчика ошибок или самого сервера.
Сообщение от laimas
А использование кук вообще исключает клиента, сервер сразу может вывести следующий баннер, зачем все эти навороты на JS?
Так, пожалуй, проще для пользователя, который будет использовать этот код, а мне не придется объяснять, что куки нужно писать до того, как контент будет выведен на страницу.

Вы можете предложить ТС вариант без js.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при обработке данных TBUCTEP Общие вопросы Javascript 11 12.05.2017 14:56
Простой скрипт выбора из базы данных. Atridies Элементы интерфейса 31 14.02.2016 12:49
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
Баг при просчете данных в простой html-таблице Vargentum jQuery 1 03.05.2013 13:08
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00