есть ли какие-либо отрицательные последствия определения источника файла JavaScript, который на самом деле не существует?

Если Вы действительно пишете сценарий src = "/path/to/nonexistent/file.js" в файле HTML и вызове что в браузере, и нет никаких зависимостей или ресурсов больше нигде в файле HTML, которые ожидают файл или кодируют там для фактического существования, есть ли что-нибудь по сути плохая практика о выполнении этого?

Да, это - нечетный вопрос. Объяснение является разработчиком, имеет дело с CMS, который позволяет пользовательским (автономным) файлам JavaScript быть обеспеченными при определенных обстоятельствах. Проблемой является CMS, не очень гибко когда дело доходит до создания условного выражения, включает для JavaScript. Поэтому легче просто сделать ссылки на автономные js файлы независимо от того, являются ли они на самом деле в указанном пути.

Так как никакие ошибки не отображены пользователю, эта практика должна быть рассмотрена жизнеспособная возможность?

7
задан dreftymac 20 May 2010 в 02:53
поделиться

6 ответов

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

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

(По крайней мере, так было с одной версией FireFox, я надеюсь, что они исправили это, поскольку я видел, что это произошло ~ 2 года назад. *)

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

Лучше всего иметь один непротиворечивый URL-адрес, который не используется, который используется в качестве заполнения для всех "несуществующих" файлов JavaScript, который возвращает 0-байтовый ответ с заголовками HTTP, сообщающими UA кешируйте его до тех пор, пока коровы не вернутся домой, что должно свести на нет большинство штрафов за нагрузку на ваш сервер <-> после первого попадания (и это вряд ли должно повредить людям даже при старом коммутируемом доступе)

* Извлеченный урок: не помещайте скрипт -src ссылки в голове, особенно для сторонних скриптов, размещенных за пределами вашего компьютера, потому что тогда вы можете радоваться тому, что клиенты смогут получить доступ к вашему сайту, но рискуете, что страница станет неработоспособной из-за небольшой рекламы JS это было недоступно из-за каких-то странностей в Интернете. Даже если они являются сторонними поставщиками с хорошей репутацией.

1
ответ дан 7 December 2019 в 12:16
поделиться

Главный недостаток - это производительность, поскольку браузер будет (изо всех сил) пытаться загрузить файл, а ваш сервер будет его искать. Наконец, браузер может вместо этого загрузить страницу 404 - тем самым замедляя загрузку страницы.

2
ответ дан 7 December 2019 в 12:16
поделиться

Если ваш веб-сервер настроен на работу с ошибкой 404 («вы, возможно, ищете это» и т. Д.), Вы также вызываете ненужную нагрузку на сервер.

1
ответ дан 7 December 2019 в 12:16
поделиться
  1. вы должны спросить себя, почему вы были слишком ленивы, чтобы проверить это самостоятельно :)

  2. Я протестировал 1000 рандомизированных имен файлов javascript, и загрузка заняла несколько наносекунд, так что нет, это не имеет значения. пример:

script src = "/ 7701992spolsky.js"

Однако это было на моем локальном компьютере, поэтому браузеру потребуется N * roundTripTime, чтобы определить удаленные серверы, где N - количество плохих сценариев. .

  1. Однако если у вас есть случайные несуществующие доменные имена, например

script src = "http://www.randomsite7701992.com/spolsky.js"

, то это займет много времени. во время.

1
ответ дан 7 December 2019 в 12:16
поделиться

Если вы решите реализовать это таким образом, вы можете настроить веб-сервер, чтобы, если указанный JS-файл не найден, вместо 404 он мог бы возвращать перенаправление (301) на пустой JS-файл / файл по умолчанию.

0
ответ дан 7 December 2019 в 12:16
поделиться

Если вы используете asp.net, вы можете рассмотреть возможность использования пользовательских обработчиков (ASHX файлы). Вот пример:

public class JavascriptHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) 
    {
      context.Response.ContentType = "text/plain";
      //Some code to check if javascript code exists
      string js = ""; 

      if(JavascriptExists())
      {
        js = GetJavascript();
      }
      context.Response.write(js);
    }
}

Затем в заголовке html вы можете объявить файл, указывающий на пользовательский обработчик:

src="/js/javascripthandler.ashx"
0
ответ дан 7 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: