18.09.2018, 14:22
|
Интересующийся
|
|
Регистрация: 17.09.2018
Сообщений: 10
|
|
Сообщение от laimas
|
dr.zoom, дело хозяйское, но вы хотите сделать почти такое - есть десятки изображений весом по N мегабайт, которые вы все грузите клиенту ради того, чтобы показать одно. Понятно, что это бесполезная трата ресурсов клиента.
Хотите чтобы клиент определял контент, ну так пусть определяет, а определение, это не выбор среди множества бесполезно загруженного, а асинхронный запрос указанного с сервера. И можете менять его по любому желаемому интервалу.
|
дело в том, что мне нужно ротировать рекламный блок при каждом обновлении странички и показывать разные материалы, будь то баннер, или код на javascript.
Как это лучше исполнить, я как раз и хочу тут у вас узнать. Помогите с кодом люди добрые
|
|
18.09.2018, 14:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от dr.zoom
|
дело в том, что мне нужно ротировать рекламный блок при каждом обновлении странички
|
Это не означает, что эти блоки нужно все грузить клиенту, они как раз должны находиться на сервере. Причем рекламный блок не просто обновляется, там куча условий - число показов за определенное время, приоритеты, место отображения и т.п. А этим как раз заведует не клиент, а сервер.
|
|
18.09.2018, 14:37
|
Интересующийся
|
|
Регистрация: 17.09.2018
Сообщений: 10
|
|
Сообщение от laimas
|
Это не означает, что эти блоки нужно все грузить клиенту, они как раз должны находиться на сервере. Причем рекламный блок не просто обновляется, там куча условий - число показов за определенное время, приоритеты, место отображения и т.п. А этим как раз заведует не клиент, а сервер.
|
я с вами не спорю, да пусть так и будет. ну а если скрипт будет тянуть одну строку с кодом из файлика data.dat к примеру.
|
|
18.09.2018, 14:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Скрипт клиентский ни из какого файла ничего тянуть не может. В простейшем случае, клиентских усилий может и не потребоваться, если у клиента включены куки. В этом случае при запросе страницы сервер проверяет установлена ли кука у клиента, если нет, то он выводит первый блок (в файле ли он или это базой определяется, не важно, важно что сервер может получать данные любым способом), и устанавливает куку. Если кука установлена, то ее значение увеличивается, сохраняется в куках и уже это значение определяет какой блок выводить.
Что-то более сложное, это уже потребует клиентского сценария.
|
|
18.09.2018, 14:51
|
Интересующийся
|
|
Регистрация: 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.
|
|
18.09.2018, 15:13
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Какой язык использует сервер?
|
|
18.09.2018, 19:07
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
laimas,
Сообщение от laimas
|
Какой язык использует сервер?
|
Судя по 15-му комментарию - PHP.
|
|
18.09.2018, 19:09
|
Профессор
|
|
Регистрация: 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.
|
|
18.09.2018, 19:38
|
Профессор
|
|
Регистрация: 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.
|
|
18.09.2018, 20:04
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от laimas
|
Для кого?
|
Для обработчика ошибок или самого сервера.
Сообщение от laimas
|
А использование кук вообще исключает клиента, сервер сразу может вывести следующий баннер, зачем все эти навороты на JS?
|
Так, пожалуй, проще для пользователя, который будет использовать этот код, а мне не придется объяснять, что куки нужно писать до того, как контент будет выведен на страницу.
Вы можете предложить ТС вариант без js.
|
|
|
|