Asp.Net MVC Объединение и удаление встроенных сценариев во время ответа - PullRequest
1 голос
/ 19 июня 2010

Я провел некоторый анализ производительности на нескольких веб-сайтах, над которыми я работаю, и заметил, что большой проблемой являются встроенные скрипты.Для внешних скриптов я написал обработчик http, который объединяет, минимизирует и упаковывает JavaScript в один файл.Затем он сохраняется для повторного использования позже путем хеширования имен файлов.

Что мне интересно (не уверен, что это хорошая идея, но я пишу, чтобы получить некоторую обратную связь), если я удаляю все элементы скрипта с текстом скриптавнутри них и объединить их в один файл.Затем я использую тот же процесс, который я использую для внешних сценариев, и объединяю их в один сценарий.

Джон

Ответы [ 2 ]

1 голос
/ 19 июня 2010

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

Вы также хотите проверить SquishIt .

Grz, Kris.

0 голосов
/ 03 декабря 2012

Можно минимизировать и связать встроенные JavaScript с внешними файлами.

Как я уже упоминал здесь Сократить встроенный JavaScript во время сборки для ASP.net?

С помощью шаблонных помощников Razor вы можете создать метод расширения, подобный приведенному ниже:

public static MvcHtmlString AddScriptSource(this HtmlHelper helper, Func<dynamic, HelperResult> source, string key)
{
    string scriptSource = source(null).ToHtmlString();

    // Cache scriptSource here

    return MvcHtmlString.Empty;
}

, который бы вы использовали следующим образом:

@Html.AddScriptSource(@<text>$(document).ready(function() { $('h1').text('The current controller is @ViewContext.RouteData.Values["controller"].ToString()'); });</text>, "test")
...