Помогите мне понять <script src = "some.js? Param1 = one; param2 = two" /> - PullRequest
8 голосов
/ 23 декабря 2009

Я наблюдал куски, как показано ниже, иногда на веб-страницах. Так что мне интересно узнать, что это на самом деле? или почему так написано?

<script src="somefile.js?param1=one&param2=two" />

Я могу разобрать только несколько следующих намерений

  • Это не URL страницы (я имею в виду .aspx / .php / .jsp и т. Д.), Поэтому это не хакерский код, где пользователь может добавить такой код для передачи данных без привлечения внимания пользователей в качестве тега, который не отображается на Пользовательский интерфейс или реализация старого типа альтернативы AJAX
  • Этот тип URL-параметра полезен, если пользователь не хочет, чтобы файл JS (любой другой ресурс, например, изображение) был кэширован. Это может быть быстрый способ управления кэшированием

Но я не могу понять следующее

  • Похоже на параметры URL страницы, но эти параметры в любом случае читаются в файле JavaScript и имеют некоторую дополнительную утилиту?
  • Эти параметры играют здесь какую-то дополнительную роль?
  • Каковы другие возможные практические сценарии, в которых можно использовать / использовать подобный код?

Поэтому, пожалуйста, предоставьте некоторые входные данные, связанные с тем же

Спасибо

Ответы [ 6 ]

7 голосов
/ 23 декабря 2009

Запуск кода не-JS в расширениях .js

В подобных случаях этот исходный файл .js (при условии правильных конфигураций сервера ) фактически содержит код PHP / .NET, который может читать эти добавленные значения.

Как вы сказали, Избежание кэша ...

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

4 голосов
/ 23 декабря 2009

URL, имеющий '.js', ничего не значит. все еще может обрабатываться серверным скриптом, таким как ASP или PHP.

4 голосов
/ 23 декабря 2009

Либо файл javascript не является статичным (он генерируется сервером на основе параметров в его строке запроса)

OR

В самом файле JavaScript вы можете проверить его собственные параметры строки запроса (не только страницы, но и URL-адреса исходного кода javascript).

OR

(Это не совсем соответствует вашему сценарию, но) вы также можете добавить параметры в конце изображения и URL-адреса сценария как способ управления версиями. Версия с url = "somescript.js? V = 3" будет кэшироваться пользователем до тех пор, пока страница не изменится, и URL-адрес не будет = "somescript.js? V = 4". Файл будет заменен версией на сервере независимо от настроек браузера.

Я предполагаю (не глядя на этот конкретный случай), что файл javascript читает свою собственную строку запроса. Я сделал это, и это очень помогло.

2 голосов
/ 23 декабря 2009

Похоже на параметры URL страницы, но эти параметры в любом случае читаются в файле JavaScript и имеют некоторую дополнительную утилиту?

Да вы можете читать их в JavaScript, Scriptaculous использует этот подход для загрузки модулей, например:

<script type="text/javascript" src="scriptaculous.js?load=effects,dragdrop">
</script>

Эти параметры играют какую-то дополнительную роль здесь? Каковы другие возможные практические сценарии, в которых можно использовать / использовать подобный код?

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

2 голосов
/ 23 декабря 2009

Может использоваться по трем причинам:

1) Для генерации файла JavaScript на сервере в зависимости от параметров;

2) Чтобы избежать кеширования;

3) Чтобы передать параметры самому JavaScript

0 голосов
/ 23 декабря 2009

Примером этого на практике может служить серверный обработчик для somefile.js, который использует параметры (имена других сценариев), чтобы определить, какие сценарии действительно необходимы, и объединить / минимизировать их, возвращая их как один файл somefile.js. файл сценария.

...