По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Управление кэш-памятью определяет поведение кэширования для веб-сайта, давая браузерам понять, как часто следует обновлять локально хранящиеся ресурсы.
Что такое cache-control?
Cache-control – это HTTP-заголовок, который определяет поведение браузера при кэшировании. Проще говоря, когда кто-то посещает веб-сайт, то его браузер сохраняет определенные ресурсы, такие как изображения и данные веб-сайта, в хранилище, которое называется кэш. Когда пользователь вновь посещает этот веб-сайт, то cache-control диктует правила, которые определяют, будут ли эти ресурсы загружены из локального кэша данного пользователя, или браузер должен отправить запрос на сервер для получения новых ресурсов. Для более глубокого понимания, что такое cache-control необходимо базовое понимание того, что такое кэширование в браузере и что такое HTTP-заголовки.
Что такое кэширование в браузере?
Как уже было описано выше, кэширование в браузере – это когда веб-браузер сохраняет ресурсы веб-сайта, чтобы не запрашивать их вновь с сервера. Например, фоновое изображение веб-сайта может быть сохранено локально в кэше, чтобы при повторном посещении пользователем данного веб-сайта изображение загружалось из локальных файлов пользователя, и тем самым страница загружалась бы быстрее.
Браузеры хранят эти ресурсы в течение определенного периода времени, известного как время жизни информации (TTL - Time To Live). Если пользователь запросит кэшированный ресурс после истечения TTL, то браузеру придется снова обратиться к серверу, чтобы загрузить новую копию ресурса. Как браузеры и веб-серверы узнают TTL для каждого ресурса? Вот здесь в игру вступают HTTP-заголовки.
Что такое HTTP-заголовки?
Протокол передачи гипертекста (HTTP - Hypertext Transfer Protocol) представляет собой синтаксис для обмена данными во Всемирной паутине, и этот обмен данными состоит из запросов от клиентов к серверам и ответов от серверов к клиентам. Каждый из HTTP-запросов и ответов содержит ряд пар «ключ-значение», которые называют заголовками.
Заголовки содержат большое количество важной информации о каждом сообщении. Например, заголовок запроса обычно содержит:
Информацию о том, какой ресурс запрашивается
Информацию о том, какой браузер использует клиент
Информацию о том, какие форматы данных примет клиент
Заголовки ответов обычно содержат информацию о:
Успешности выполнения запроса
Языке и формате любых ресурсов в теле ответа
Заголовок cache-control может использоваться как в HTTP-запросах, так и в HTTP-ответах.
Что находится внутри заголовка cache-control?
Заголовки состоят из пар «ключ-значение», разделенных двоеточием. Для cache-control «ключ», или часть слева от двоеточия, - это всегда «cache-control». «Значение» - это то, что находится справа от двоеточия. Значений для cache-control может быть несколько, или оно может быть одно. Если их несколько, то они разделяются запятыми.
Эти значения называются директивами, и они определяют, кто может кэшировать ресурс, а также как долго эти ресурсы могут быть кэшированными, прежде чем их необходимо будет обновить. Давайте рассмотрим несколько наиболее распространенных директив cache-control:
cache-control: private
Ответ с директивой private может быть кэширован только клиентом, но никак не посредником, таким как CDN или прокси-сервером. Часто сюда относятся ресурсы, которые содержат личные данные, например, веб-сайт, отображающий личную информацию пользователя.
cache-control: public
Здесь наоборот, директива public говорит о том, что ресурс может хранится в любом кэше.
cache-control: no-store
Ответ с директивой no-store нельзя кэшировать нигде и никогда. Это означает, что при каждом запросе пользователем этих данных, требуется отправить запрос на исходный сервер для их получения. Эта директива, как правило, используется для ресурсов, содержащих конфиденциальные данные, например, информацию о банковском счете.
cache-control: no-cache
Эта директива означает, что кэшированные версии запрошенного ресурса нельзя использовать без предварительной проверки наличия обновленной версии. Обычно это делается с помощью ETag.
ETag – это еще один HTTP-заголовок, который содержит маркер, уникальный для версии ресурса на момент его запроса. Этот маркер меняется на исходном сервере при каждом обновлении ресурса.
Когда пользователь возвращается на страницу с ресурсом под директивой no-cache, клиенту всегда придется подключаться к исходному серверу и сравнивать ETag на кэшированном ресурсе с ETag на сервере. Если они совпадают, то кэшированный ресурс предоставляется пользователю. В противном случае, это означает, что ресурс был обновлен, и клиенту необходимо загрузить обновленную версию, чтобы иметь возможность предоставить его пользователю. Этот процесс гарантирует, что пользователь всегда будет получать самую последнюю версию ресурса без ненужных постоянных загрузок.
cache-control: max-age
Эта директива определяет время жизни информации, или, иными словами, сколько секунд ресурс может находиться в кэше после его загрузки. Например, если max-age установлен на 1800, то это значит, что в течение 1800 секунд (30 минут) после того, как ресурс был впервые запрошен с сервера, пользователю будет предоставляться кэшированная версия этого ресурса при последующих запросах. Если пользователь запросит этот ресурс снова по истечении этих 30 минут, то клиенту необходимо будет запросить новую копию с исходного сервера.
Директива s-maxage предназначена специально для общих кэшей, таких как CDN. Она определяет, как долго эти общие кэши могут продолжать обслуживать ресурс из кэша. Эта директива отменяет действие директивы max-age для некоторых клиентов.
Почему cache-control так важен?
Кэширование в браузере – это отличный способ сохранить ресурсы и, тем самым, улучшить процесс взаимодействия с пользователем в Интернете, но без cache-control этот процесс не был бы столь надежным. Все ресурсы на всех сайтах будут использовать одни и те же правила кэширования, а это значит, что конфиденциальная информация будет кэшироваться также, как и общедоступная информация, а ресурсы, которые часто обновляются, будут кэшироваться на то же время, что и ресурсы, которые редко обновляются.
Cache-control добавляет гибкости, которая делает кэширование в браузере действительно полезным, позволяя разработчикам определять, как будет кэшироваться каждый ресурс. Этот заголовок также позволяет разработчикам устанавливать определенные правила для посредников, что является причиной, по которой сайты, которые используют CDN, как правило, работают лучше, чем сайты, которые этого не делают.
Rocket.Chat — это бесплатный масштабируемый open source корпоративный чат, разработанный с помощью Meteor. Rocket.Chat можно считать аналогом Slack, который можно развернуть на своем сервере, и подключаться к нему с клиентов на Linux, Windows, macOS, Android и iOS.
Функции Rocket.Chat
Чат в реальном времени
Аудиоконференции
Видеоконференции
Каналы
Гостевой вход
Трансляция экрана
Передача файлов
Полнофункциональный API
Для обеспечения безопасности используется:
Групповая синхронизация LDAP
Двухфакторная аутентификация 2FA
Сквозное шифрование
Единый вход SSO
Несколько поставщиков Oauth аутентификации
Рассказываем как установить и настроить сервер и клиент Rocket.Chat в Linux.
Шаг 1. Установка Snap в Linux
Для простоты мы будем использовать систему управления пакетами Snaps. Первым делом надо установить пакет snapd c помощью диспетчера пакетов.
$ sudo apt install snapd #Ubuntu и Debian
$ sudo dnf install snapd #Fedora 22+/CentOS/RHEL 8
$ sudo yum install snapd #CentOS/RHEL 7
Далее необходимо включить модуль systemd, который управляет основным сокетом мгновенной связи. Эта команда запустит сокет и позволит ему запускаться при загрузке системы.
$ sudo systemctl enable --now snapd.socket
Шаг 2: Установка Rocket.Chat в Linux
Для установки rocketchat-server выполните:
$ sudo snap install rocketchat-server
Когда установка через snap будет завершена, rocket.chat сервер начнет работать и прослушивать порт 3000. Далее откройте веб-браузер и введите следующий адрес, чтобы настроить rocket.chat через GUI.
http://SERVER_IP:3000
После загрузки мастера настройки укажите следующие параметры: полное имя администратора, имя пользователя, адрес электронной почты организации и пароль.
Далее надо указать информацию об организации: тип организации, название, отрасль, размер, страна и сайт.
Затем нужно указать информацию о сервере - имя сайта, язык, тип сервера, и включение или отключение двухфакторной аутентификации 2FA.
На следующей странице нужно зарегистрировать сервер. Здесь есть две опции. Первая - использовать предварительно настроенные шлюзы и прокси, предоставленные Rocket.Chat Вторая - сохранить автономность и создать учетные записи у поставщиков услуг, обновить предварительно настроенные параметры, а также перекомпилировать мобильные приложения с вашими частными сертификатами.
Настройка завершена, и ваше рабочее пространство готово, теперь надо нажать Go to your workspace (Перейти в рабочее пространство)
Вот так оно выглядит.
Шаг 3: Настройка обратного прокси для Rocket.Chat
Обратный прокси-сервер, например nginx или Apache, позволяет настроить приложение Rocket.Chat для доступа через домен или поддомен. Rocket.Chat является сервером приложений среднего уровня, который не поддерживает SSL/TLS. Обратный прокси-сервер позволит настраивать сертификаты SSL/TLS для включения HTTPS.
Обратный прокси Nginx для Rocket.Chat
Сначала установите Nginx.
$ sudo apt apt install nginx #Ubuntu/Debian
$ sudo dnf install nginx #Fedora 22+/CentOS/RHEL 8
$ sudo yum install nginx #CentOS/RHEL 7
Далее запустите службу Nginx, включите ее автоматический запуск при загрузке системы и проверьте ее статус
$ sudo systemctl enable --now nginx
$ sudo systemctl status nginx
Затем создайте block файл виртуального сервера для приложения Rocket.Chat, например, в каталоге /etc/nginx/conf.d/.
$ sudo vim /etc/nginx/conf.d/chat.merionet.com.conf
Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.
upstream backend {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name chat.merionet.com;
# You can increase the limit if you need to.
client_max_body_size 200M;
error_log /var/log/nginx/chat.merionet.com.log;
location / {
proxy_pass http://backend/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
Наконец проверьте синтаксис и перезапустите службу Nginx.
$ sudo nginx -t
$ sudo systemctl restart nginx
Обратный прокси Apache для Rocket.Chat
Установите пакет Apache2
$ sudo apt install apache2 #Ubuntu/Debian
$ sudo dnf install httpd #Fedora 22+/CentOS/RHEL 8
$ sudo yum install httpd #CentOS/RHEL 7
Далее запустите и включите службу apache и проверьте, запущена ли она и работает.
----- В Ubuntu/Debian -----
$ sudo systemctl enable --now apache2
$ sudo systemctl status apache2
----- В CentsOS/RHEL 7/8 -----
$ sudo systemctl enable --now httpd
$ sudo systemctl status httpd
Затем создайте файл виртуального хоста для приложения Rocket.Chat, например, в каталоге /etc/apache2/sites-available/ или /etc/httpd/conf.d/.
----- В Ubuntu/Debian -----
$ sudo vim /etc/apache2/sites-available/chat.merionet.com.conf
----- В CentsOS/RHEL 7/8 -----
$ sudo vim /etc/httpd/conf.d/chat.merionet.com.conf
Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.
<VirtualHost *:80>
ServerAdmin admin@merionet.ru
ServerName chat.merionet.com
LogLevel info
ErrorLog /var/log/chat.merionet.com_error.log
TransferLog /var/log/chat.merionet.com_access.log
<Location />
Require all granted
</Location>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:3000/$1 [P,L]
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
В Ubuntu и Debian включите необходимые модули apache2 и перезапустите службу.
$ sudo a2enmod proxy_http
$ sudo a2enmod proxy_wstunnel
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2
В CentOS/RHEL и Fedora перезапустите службу apache.
# systemctl restart httpd
Теперь откройте браузер и введите ваш настроенный адрес и приложение Rocket.Chat станет доступно через ваш домен, настроенный на прокси-сервере.
http://chat.merionet.com
Шаг 4: Установка клиентов Rocket.Chat
Клиентские приложения можно скачать с официального сайта Rocket.Chat. Чтобы установить десктопное приложение в Linux, вы загрузите пакет deb (x64) или rpm (x64) в зависимости от вашего дистрибутива Linux.
$ wget -c https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/2.17.7/rocketchat_2.17.7_amd64.deb
Или
$ wget -c https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/2.17.7/rocketchat-2.17.7.x86_64.rpm
Затем установите пакет с помощью диспетчера пакетов dpkg или rpm
$ sudo dpkg -i rocketchat_2.17.7_amd64.deb #Ubuntu/Debian
$ sudo rpm -i rocketchat-2.17.7.x86_64.rpm #CentOS/RedHat
Ручная установка Rocket.Chat
Если вы не хотите устанавливать Rocket.Chat через Snaps, вы можете сделать это вручную.
Установка Node.js
Сначала обновите список системных пакетов:
sudo apt update
Установите Node.js, npm и все другие зависимости, необходимые для сборки пакетов npm из исходного кода:
sudo apt install nodejs npm build-essential curl software-properties-common graphicsmagick
Мы будем использовать n, пакет npm, который позволяет интерактивно управлять версиями Node.js. Выполните команды ниже, чтобы установить n и Node.js:
sudo npm install -g inherits n
sudo n 8.11.3
Установка MongoDB
MongoDB - это документно-ориентированная база данных NoSQL, которая используется Rocket.Chat для хранения данных.
Импортируйте открытый ключ MongoDB и включите официальный репозиторий MongoDB:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
После включения репозитория apt обновите список пакетов и установите MongoDB, набрав:
sudo apt update
sudo apt install mongodb-org
Затем включите и запустите службу MongoDB:
sudo systemctl start mongod
sudo systemctl enable mongod
Создание нового системного пользователя
Теперь необходимо создать нового пользователя и группу с именем rocket, которые будут запускать инстанс Rocket.Chat.
sudo useradd -m -U -r -d /opt/rocket rocket
Добавьте пользователя www-data в новую группу пользователей и измените права доступа к каталогу /opt/rocket, чтобы Nginx мог получить доступ к установке Rocket.Chat:
sudo usermod -a -G rocket www-data
sudo chmod 750 /opt/rocket
Установка Rocket.Chat
Переключитесь на пользователя rocket
sudo su - rocket
Загрузите последнюю стабильную версию Rocket.Chat с помощью curl:
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
После завершения загрузки извлеките архив и переименуйте каталог в Rocket.Chat:
tar zxf rocket.chat.tgz
mv bundle Rocket.Chat
Перейдите в каталог Rocket.Chat/programs/server и установите все необходимые пакеты npm:
cd Rocket.Chat/programs/server
npm install
Чтобы протестировать нашу установку перед созданием модуля systemd и настройкой обратного прокси с Nginx или Apache, мы установим необходимые переменные среды и запустим сервер Rocket.Chat
export PORT=3000
export ROOT_URL=http://0.0.0.0:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat
Вернитесь в каталог Rocket.Chat и запустите сервер Rocket.Chat, введя следующие команды:
cd ../../
node main.js
Если ошибок нет, вы должны увидеть следующий вывод:
? +---------------------------------------------+
? | SERVER RUNNING |
? +---------------------------------------------+
? | |
? | Rocket.Chat Version: 0.71.1 |
? | NodeJS Version: 8.11.3 - x64 |
? | Platform: linux |
? | Process Port: 3000 |
? | Site URL: http://0.0.0.0:3000/ |
? | ReplicaSet OpLog: Disabled |
? | Commit Hash: e73dc78ffd |
? | Commit Branch: HEAD |
? | |
? +---------------------------------------------+
Остановите сервер Rocket.Chat с помощью Ctrl+C и вернитесь к своему пользователю sudo, набрав exit.
Создание модуль Systemd
Чтобы запустить Rocket.Chat как службу, нужно создать файл модуля rocketchat.service в каталоге /etc/systemd/system/.
sudo nano /etc/systemd/system/rocketchat.service
Вставьте следующий код:
[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target
[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=https://chat.merionet.com PORT=3000
ExecStart=/usr/local/bin/node /opt/rocket/Rocket.Chat/main.js
[Install]
WantedBy=multi-user.target
Сообщите systemd, что мы создали новый файл модуля, и запустите службу Rocket.Chat, выполнив:
sudo systemctl daemon-reload
sudo systemctl start rocketchat
Проверьте статус сервиса:
sudo systemctl status rocketchat
Вывод должен быть таким:
* rocketchat.service - Rocket.Chat server
Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2018-11-07 14:36:24 PST; 5s ago
Main PID: 12693 (node)
Tasks: 10 (limit: 2319)
CGroup: /system.slice/rocketchat.service
`-12693 /usr/local/bin/node /opt/rocket/Rocket.Chat/main.js
Наконец, включите автоматический запуск службы Rocket.Chat во время загрузки:
sudo systemctl enable rocketchat
Готово, мы установили Rocket.Chat вручную, теперь можно переходить к настройке обратного прокси и инициализации системы, которые были описаны начиная с шага 3.
Итоги
В этом руководстве вы узнали, как установить Rocket.Chat в Linux и как настроить Nginx и Apache в качестве обратного прокси.
Чтобы узнать больше о Rocket.Chat посетите страницу документации.
В статье расскажем, как работать с основными фичами рабочего места агента и супервизора в Cisco - Finesse. Продукт создан для работы с "сердцем" контактных центров на базе UCCX и UCCE.
Подключаемся к Extension Mobility
Чтобы подключиться к Extension Mobility, с телефонного аппарата:
Нажмите на кнопку Services;
Вводим Used ID и PIN;
Подтверждаем операцию.
После этого, телефон перезагрузится и будет с новым профилем и номером. Разлогиниться можно в аналогичной последовательности.
Запуск агентского приложения Finesse
Запускаем совместимый интернет браузер;
Вводим URL адрес вашего Finesse приложения;
Подключившись к форме авторизации, вводим:
ID - ваш агентский идентификатор;
Password - пароль;
Extension - номер, под которым будет работать агент;
Подключаемся.
Готово. Если вам нужно выйти из приложения, то под залогиненным пользователем нужно изменить статус работы на "Не готов", "Конец смены" или аналогичный статус у вас, который обозначает окончание работы. Затем, нажмите в правом верхнем углу кнопку Sign Out.
Как выглядит интерфейс менеджера в Finesse?
Как выглядит интерфейс агента/оператора в Finesse?
Статистика по очереди показывает агенту количество звонящих в КЦ людей, ожидающих ответа в очереди. Так же сегмент покажет самое длинное время ожидания ответа в очереди.
В зоне "Отчет по команде", агент может видеть своих коллег, их статусы готовности, а также причину неготовности в виде числового кода.
Состояния агентов
Тут все достаточно просто. Если агент не готов, то его статус выглядит вот так (красный индикатор):
Если агент готов к работе, то зеленый индикатор будет в зоне статус оператора - все просто:
Меняем статус агента
Как вы могли заметить, рядом с индикатором состояния агента, есть небольшая стрелочка, которая смотрит вниз - это не что иное как выпадающий список статусов, при нажатии на который, вы сможете выбрать один из статусов работы/перерыва, доступный вам:
Ответить на звонок
Первое - чтобы принимать вызовы, вам необходимо быть в статусе "Готов". Далее, когда вызов прилетает в десктоп оператора, агент автоматически резервируется. Зона "Статус звонка", которую мы обозначили на скриншоте ранее в разделе "Как выглядит интерфейс агента/оператора в Finesse?" расширяется и отображается различные параметры звонка для агента: Чтобы ответить на звонок, нужно нажать на соответствующую кнопочку "Answer". Она зеленого цвета.
Обработка звонка в Finesse
Во время разговора с клиентом агент видит:
Трансфер звонка
Чтобы выполнить трансфер звонка:
Нажмите на кнопку "Consult", как показано на скриншоте выше;
Введите внутренний номер, с которым необходимо переговорить;
Переговорите с адресатом. Если он готов принять звонок, нажмите кнопку "Transfer".
Конференция
Чтобы собрать конференцию звонка:
Нажмите на кнопку "Consult";
Наберите номер;
Нажмите "Call";
Переговорите с контактом. Если все ОК, нажмите кнопку "Conference"
Выполнить исходящий вызов
Чтобы выполнить исходящий звонок из Cisco Finesse:
Установите свой статус в "Not Ready", чтобы перестать принимать входящие звонки;
Нажмите на кнопку "Make a New Call"
Выберите адресата звонка среди листа контактов или наберите номер с помощью специальной клавиатуры:
Нажмите "Call";
Чтобы завершить вызов, нажмите "End".