| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
ASP.NET и немного поисковой оптимизации
С тех пор, как появилась Альтависта, большинство посетителей стали приходить на сайты из поисковых машин. И головной боли стало больше. Теперь мало написать сайт, нужно сделать его совместимым с поисковыми ботами. Одна из тех задач, которую приходится решать — быстрая переиндексация обновлений на сайте. Поисковые роботы чаще посещают те сайты, которые чаще меняются. Для этого они посылают запрос с заголовком И Apache, и IIS корректно обрабатывают такие запросы, если речь идёт о статических страницах. Но у них возникают проблемы с динамическими страницами (это касается и PHP, и ASP.NET) — они не могут использовать время последнего изменения файла. Что, если код написан месяц назад, а новость из базы данных опубликована сегодня утром? С другой стороны, мы могли внести правки в мастер-страницу (master page) или пользовательский элемент управления (ascx-файл). Эти модификации влияют на содержимое страницы, которое «видит» поисковый робот, и, значит, время её последнего изменения должно быть новым. Вероятно, вы думаете, что нам придётся искать все файлы, связанные с aspx-страницей и выбирать среди них самый новый? Нет. Один простой трюк позволит уместить весь наш код в одну строку. РешениеДата и время последнего изменения страницыASP.NET перекомпилирует страницу каждый раз, когда меняется она, или любая из тех страниц, от которых она зависит. Результат компиляции, dll-файл, размещается во временной папке ASP.NET, например, в C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Files. Страница в ASP.NET — это наследник класса DateTime lastModified = File.GetLastWriteTime(Page.GetType().Assembly.Location); Здесь учитываются изменения кода или шаблона страницы, а так же её мастер-страниц и пользовательских элементов управления. КомпонентДавайте позаботимся об удобстве решения. Проще всего представить его в виде элемента управления: <binateq:LastModifiedHandler ID=”lastModifiedHandler” runat="server" /> Этот элемент управления не генерирует HTML-код, но обрабатывает Кроме того, он предоставляет метод using(SqlCommand cmd = connection.CreateCommand()) Естественно, компонент сохраняет только самое позднее время, поэтому его
можно применять с разными источниками внутри одной и той же страницы. Кстати,
если бы код был не учебным, а рабочим, я бы лично проверял возвращаемое значение
на РеализацияДля начала решим проблему хранения даты/времени последней модификации: private DateTime _lastModified = DateTime.MinValue; Последовательный вызов метода Всю работу по обработке и подготовке заголовков мы будем проводить в
переопределённом методе Потому что отклик на запрос С другой стороны, значения из базы данных появляются на этапе обработки
событий, таких как Метод protected override void OnPreRender(EventArgs e) Код получился тривиальным (надеюсь, это порадует любителей простых статей,
которые оставили комментарии в прошлый раз). Метод Дата и время в HTTP передаются в соответствии со стандартом RFC1123. Ему в
.NET соответствует формат “R”, который используется при вызове
Если мы получили заголовок Без ЗаключениеКажется, это всё. Чтобы превратить код в компонент поместите его в класс: [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] Остался всего один вопрос. А можно ли упростить назначение даты и времени из внешних источников? Неужели всё время придётся писать небольшой, но надоедливый код? Сейчас я пытаюсь решить эту проблему с помощью рефлексии. Если вам интересны результаты исследований, пишите, оформлю их в виде статьи. Рубрика: Советы
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|