Проблема с производительностью Javascript при использовании javascript.php вместо того , чтобы javascript.js

#javascript #php

#javascript #php

Вопрос:

Есть ли какие-либо проблемы с производительностью при использовании

 <script src='javascript.php'></script> //.php
 

Вместо

 <script src='javascript.js'></script> //.js
 

javascript.php (это нужно для доступа к значению сеанса)

 <?php header("Content-type: application/javascript"); ?>

$(function() {
    $( "#progressbar" ).progressbar({
        value: <?php echo $_SESSION['value'] ?>
    });

   // ... more javascript ...
 

Комментарии:

1. это плохая практика? ДА. это важнее, чем производительность? ДА.

2. Я бы предположил, что ваш сервер немного быстрее обслуживает статический файл ( .js ), чем файл, который он должен сначала проанализировать ( .php ). Вы можете сравнить это, попробовав обе версии и взглянув на вкладку Chrome DevTools network.

3. правильный способ сделать это: заменить динамический JS-код входными параметрами (аргументами функции). поместите эти входные параметры (конфигурацию) в динамически сгенерированный HTML-код.

Ответ №1:

Это проблема с производительностью, но не по той причине, которую вы могли бы ожидать. Это правда, что разбор PHP-файла занимает на долю секунды больше времени, чем обработка статического JS-файла, но настоящая проблема заключается в том, что вы не можете кэшировать PHP-файл, потому что он содержит изменяющуюся переменную. Клиент должен загружать файл снова и снова каждый раз.

«Правильный» способ сделать это — установить переменную JavaScript в HTML-файле.

 <script>
    var session = <?php echo json_encode( $_SESSION[ 'value' ] ); ?>; 
</script>

<script src='javascript.js'></script>
 

javascript.js:

 $(function() {
    $( "#progressbar" ).progressbar({
        value: session
    });
 

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

Вопрос мнения, но даже «более правильным» способом было бы извлекать любые динамические значения с сервера с помощью вызовов AJAX.

Ответ №2:

Версия PHP будет медленнее, потому что вы должны запустить PHP на сервере для создания Javascript.

На клиенте не будет никакой разницы в производительности. Неважно, как был создан JS, это просто текст.