Прямі посилання на AJAX веб-сайтах – наша технологія Fullajax Direct Link, AJAX

Вітаю всіх читачів. Популярність AJAX така, що це по суті вже стандарт де-факто для багатьох проектів. Хоча, як і всі технології (особливо нові та/або модні), вона часто застосовується (чого вже гріх таїти) і там, де без неї не обійтися, і там, де цілком можна, а часто і потрібно. Втім, сьогодні йтиметься про інше. Одним з неприємних моментів при використанні AJAX є відсутність прямих посилань на динамічно згенеровані сторінки або їх окремі частини. Тут криється і взагалі концептуальне питання - а що, власне кажучи, є в такому підході сторінкою - вона не має деякого статичного уявлення, щоразу зовсім інша (не плутати з динамічною генерацією на сервері), і, фактично, надає користувачеві вікно багатовимірне уявлення самої себе.

Але все ж таки – припустимо, у нас є простенький, але претензійний веб-сайт візитка, де за переходами меню AJAX підвантажує і виводить контент, а ми хочемо дати знайомому по ICQ посилання на контактну сторінку (або будь-яку іншу, не має значення).

Є два підходи вирішення проблеми посилань.

Надалі, при переході за таким посиланням (наприклад, із закладок) механізм добування контенту сторінки реалізується шляхом визначення на клієнта якоря, та підвантаження відповідного йому контенту. В інтернеті не дуже багато статей на цю тему. У рунеті взагалі практично немає. Однією з проблем даного підходу є перше «холостий завантаження контенту».

Є кілька варіантів вирішення цієї проблеми. Один з них заснований на тимчасовому приховуванні контенту та подальшим показом його лише після дозавантаження відповідного якоря контенту. Даний підхід все ж таки має недолік зайвоїзавантаження вмісту. На жаль, прикладів такої реалізації я не знайшов.

Другий підхід, який мені відомий, - це реалізація першої сторінки пустушки - і завантаження контенту тільки після визначення AJAX якоря. Приклади реалізації можна побачити ось тут: http://www.datamash.us/#:chips:goto:gs12 http://fullajax.ru/examples/index.html#:[addscript]

Даний підхід має недолік індексації сайту пошуковими системами, вони бачать кореневу сторінку пустушку. Хоча тут я оперую загальними алгоритмами, цілком можливо, що професіонали в галузі пошуку або оптимізації можуть розкрити тему індексації такого контенту.

До речі, тут і криється, на мою думку, друга проблема AJAX - все ж таки він більш підходить для реалізації саме додатків, а контент і навігація у відкритому доступі - це трохи неправильно. У додатках проблеми посилань взагалі не виникає (уявити посилання на свій відкритий лист у GMail-і я не можу, і такої потреби тим більше), а ось розробники звичайних «контентних» сайтів часто надто заглиблюються в красивості, не досліджуючи юзабіліті своїх проектів.

Проблема вирішується написанням маленького javascript-а, який зможе зробити кілька нехитрих операцій. Суть алгоритму ось у чому.

Всі редиректи робляться за допомогою javascript-а, що дозволяє при його відключенні працювати з сайтом як завжди.

І так наводжу приклад робочого клієнтського скрипта, який реально використовується на сайті розробника даного підходу (http://fullajax.ru):

Ось такі ось пироги :). До цього клієнтського скрипта додається серверний скрипт, який за наявності внутрішнього реферера вантажить замість головної сторінки, сторінку, яка вказана в реферері. Наводжу написаний на PHP робочий приклад реалізації мамботадля CMS Joomla:

Ну ось у принципі і все.

Даний алгоритм також має недолік (такий закон збереження енергії) - у результаті на 2 коннекта більше до сервера (2 редиректа), але це може бути мізерно малою часткою по відношенню до "холостий завантаження контенту".

Перевага розглянутого підходу – зберігається індексованість головної сторінки як звичайного сайту, немає завантаження непотрібного контенту («холостий запит»), немає миготіння сторінки. Необхідність застосування розглянутого алгоритму залежить від конкретної ситуації. Можливо вам це знадобиться. Використовуйте на здоров'я!