выводить содержимое текстового файла на странице ASP.NET - PullRequest
1 голос
/ 22 августа 2009

У меня есть несколько текстовых файлов HTML, которые я хотел бы динамически включить в страницу ASP.NET.

Каков наилучший способ сделать это?

Моим первым предположением было создать элемент управления Literal на странице и вывести его следующим образом:

litMyLiteral.Text = System.IO.File.ReadAllText("c:\path\to\file.htm");

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

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 августа 2009

В зависимости от того, сколько у вас файлов или как часто вы должны их читать, я бы предложил динамически загружать их в кэш asp.net. AS они вам нужны и имеют какой-то срок действия или кеш.

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

public static class StaticFiles
{
    public static string GetFile(string file)
    {
        // Note filename is the key
        if (Cache[file] != null)
        {
            // Return the cached data, this will be fast.
            return Cache[file].ToString();
        }
        else
        {
            // Make sure you do some exception checking / validation here for the
            // file data and don't hard code the path and make it relative assuming
            // it is in your application directory

            // Do you file access and store it with some type of expiry
            string output = System.IO.File.ReadAllText(string.Format("c:\path\to\{0}", file));
            Cache[file] = output;
            return output;
        }
    }
}

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

1 голос
/ 22 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...