вы перечитайте RFC 2616 еще в этом году? Если нет, сделайте. Попытка создать сайты без сильного знакомства с HTTP - это как-то соблазнить кого-то, когда вы очень пьяны; просто потому, что это делают многие другие люди, это не значит, что у вас будет хорошая производительность.
Если ресурс можно безопасно повторно использовать в течение заданного периода времени (например, безопасно для следующего часа/дня/месяца), скажите это. Используйте компонент максимального возраста в заголовке управления кешем, а также истекает (максимальный возраст лучше, чем истекает, но ничего не делает).
Если вы знаете время, когда-либо измененное, скажем так в заголовке Last-Modified (см. Примечание ниже).
Если вы не знаете, когда что-то последнее изменилось, но можете добавить возможность знать, сделайте это (например, строки базы данных timestamp в UPDATE).
Если вы можете вести запись каждый раз, когда что-то изменилось, сделайте это и создайте из него электронный тег. В то время как E-теги не должны основываться на времени, исключение - если вы знаете, что они не могут измениться в более тонком разрешении (время до ближайшей .5 секунды в порядке, если вы не можете иметь более одного изменения каждые 0,5 секунды и т. Д. .)
Если вы получили запрос с модификацией «с поправкой-временем» с датой, соответствующей последнему времени изменения, или «Нет-совпадение», соответствующее e-тегу, отправьте 304 вместо всей страницы.
Использовать сжатие Gzip или Deflate (deflate немного лучше, когда клиент говорит, что он может обрабатывать оба), но обратите внимание, что вы должны изменить e-tag. Отправка правильного заголовка Vary для этого прерывает кеширование IE, поэтому вместо этого вместо V-агента вместо него (несовершенное решение для несовершенного мира). Если вы скатите свое собственное сжатие в .NET, заметите, что очистка потока сжатия вызывает ошибки, напишите обертку, которая только очищает вывод на Flush() до финального сброса в Close().
Не побеждайте кеширование, выполненное для вас. Отключение электронных тегов в статических файлах дает вам лучшую оценку YSlow и худшую производительность (за исключением веб-ферм, когда следует использовать более сложное решение, рекомендованное YSlow).Игнорируйте то, что YSlow говорит об отключении электронных тегов (возможно, они исправили эту ошибку сейчас и больше не говорят об этом), если вы не находитесь на веб-ферме, где разные типы серверов могут обрабатывать один и тот же запрос (например, IIS и Apache, имеющий дело с одним и тем же URI, Yahoo - вот почему это сработало для них, большинство людей - нет).
Благодарим публики за закрытыми лицами, если не присвоено.
Избегайте делать что-либо, что зависит от сеансов. Если вы можете отключить сеансы, тем лучше.
Избегайте отправки большого количества просмотров. Если вы можете сделать что-то без viewstate, тем лучше.
Перейдите в IIS и посмотрите раздел HTTP Headers. Установите соответствующие значения для статических файлов. Обратите внимание, что это можно сделать для каждого сайта, для каждого каталога и для каждого файла.
Если у вас действительно массивный файл (.js, .css), то укажите ему номер версии и поместите эту версию в URI, используемый для доступа к ней (blah.js /? Version = 1.1.2). Затем вы можете установить действительно длинную дату истечения срока действия (1 год) и/или жестко закодированный электронный тег и не беспокоиться о неподвижности кеша, так как в следующий раз вы измените номер версии, а в остальной части Интернета это новый ресурс, а чем обновленный.
Я сказал "примечание ниже" и не добавить примечание.
Из них номер 3 может оказаться самым сложным, поскольку он был удален. Одно из решений - отслеживать изменения самого ресурса и обновлять его при удалении чего-либо, используемого для его создания, а другое - иметь «мягкое удаление», в котором у вас есть элемент, но отмеченный как удаленный и не используемый в Любым другим путем. Только то, что лучший способ отслеживать этот материал, зависит от приложения.
YSlow предлагает вам различные улучшения производительности, которые вы могли бы сделать. Что касается кэширования ваших скриптов, убедитесь, что они выведены из внешнего интерфейса в отдельные файлы, и они будут автоматически кэшироваться клиентскими браузерами. Также попробуйте уменьшить их количество, если возможно, группировать их в меньшее количество файлов, чтобы уменьшить количество сетевых вызовов. –
Не знаете, что вы спрашиваете здесь. Рекомендации YSlow относятся к стороне клиента. Кэширование ASP.NET - это серверная сторона. Внедрение кеша ASP.NET ничего не изменит в рейтинге YSlow. –
Примечание: игнорируйте то, что YSlow говорит об электронных тегах, если вы не находитесь на ферме. Если вы находитесь на ферме, предложите более сложный подход. Совет по отключению электронных тегов хуже, чем бесполезно и ущемляет производительность. –