Я собрал и закончил полное угловое 7 приложение с MySQL и PHP в качестве базы данных и внутреннего языка соответственно.
Каждый отправленный запрос, даже с небольшим размером ответа, например, 100 байт, потребует дополнительных нескольких секунд, чтобы начать запрос. Итак, сначала, как показано на вкладке сети, запрос pending
, затем данные загружаются.
На консоли всегда отображается предупреждение:
Блокировка перекрестного происхождения (CORB) заблокировала ответ перекрестного происхождения
http://dev.local/scripts/getStatistics.php с типом MIME
применение / JSON. Увидеть
https://www.chromestatus.com/feature/5629709824032768 для более
подробности.
Заголовки API выглядят следующим образом:
<?php
ini_set("zlib.output_compression", 1);
ini_set("zlib.output_compression_level", 9);
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
header('Content-Type: application/json');
header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');
header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
error_reporting(E_ALL);
require_once('JWT.php');
include_once('../phpmailer/PHPMailer.php');
include_once('../phpmailer/POP3.php');
include_once('../phpmailer/SMTP.php');
include_once('../phpmailer/Exception.php');
date_default_timezone_set('Asia/Beirut');
class api {
private $username ="root";
...
?>
Запрос от angular выполняется следующим образом:
getStatistics(){
let headerOptions = new HttpHeaders();
headerOptions.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
return this.http.post(this.globalVar.getStatistics, { headers: headerOptions });
}
И .htaccess
, когда приложение работает локально на автономном сервере:
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Specify file types in case necessary
</IfModule>
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
#RewriteCond %{REQUEST_URI} !echo.php
#RewriteRule .* echo.php?ua=%{HTTP_USER_AGENT}&https=%{HTTPS} [L]
SetEnvIf Origin "^http(s)?://(.+\.)?(dev.local\.com|localhost:8100|localhost:4200)$" ORIGIN=$0
Header always set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
Header merge Vary Origin
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Headers "Content-Type, cookie"
Header set Content-Type "application/json"
Header set Access-Control-Allow-Methods "GET, POST"
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"
Ответ, полученный от getStatistics, представляет собой массив:
$res = $newApi->getStatistics($conn);
echo json_encode($res, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
А на угловой стороне, где отображаются данные:
getStatistics(){
this.auth.getStatistics().subscribe(
(data)=>{
this.result = data;
this.totalU = parseInt(data['uactive']) + parseInt(data['uinactive']);
this.totalH = parseInt(data['hactive'])+parseInt(data['hinactive']);
this.totalI = parseInt(data['iactive'])+parseInt(data['iinactive']);
},
(error)=>{
console.log(error);
}
)
}
Это пример, все серверные сценарии выполняются таким образом, он добавляет дополнительные несколько секунд в ожидании, а затем достигает сервера для данных.
Мы работаем на локальных автономных серверах, и узлы разрешены на всех ноутбуках в файле hosts в system32->... folder
.
Я провел несколько поисков и обнаружил, что это может быть проблема с брандмауэром, и люди, которые обращаются к серверным сценариям, ожидают трафика или чего-то в этом роде.
Но я так не думаю, так как во время разработки на моем компьютере он делает то же самое.
Основная проблема заключается в загрузке приложения, когда при первом открытии приложения пользователем за день (после этого оно будет кэшировано), для открытия компонента входа в систему требовалось около 15 секунд. (Мое приложение полностью создано с использованием отложенной загрузки).
Это проблема локальной сети, и нам нужно использовать маршрутизаторы с гигабитными портами локальной сети? Или это проблема кода?
Я не знаю, подходит ли это сообщение к переполнению стека или оно должно быть на другом форуме по обмену стека. Так что не стесняйтесь говорить мне, чтобы переместить его на выделенный сайт.