Вітаю всіх читачів. Популярність AJAX така, що це, по суті, вже стандарт де-факто для багатьох проектів. Хоча, як і всі технології (особливо, нові і / або модні), вона часто застосовується (нема де гріх таїти) і там, де без неї не обійтися, і там, де цілком можна, а часто і потрібно. Втім, сьогодні мова піде про інше. Одним з неприємних моментів при використанні AJAX - є відсутність прямих посилань на динамічно згенеровані сторінки або їх окремі частини. Тут криється і взагалі-то концептуальне питання - а що, власне кажучи, є в такому підході сторінкою - вона не має деякого статичного уявлення, кожен раз зовсім інша (не плутати з динамічної генерацією на сервері), і, фактично, надає користувачеві вікно в багатовимірне уявлення самої себе.
Але все ж - припустимо, у нас є простенький, але претензійний веб-сайт візитка, де по переходах меню AJAX підвантажує і виводить контент, а ми хочемо дати знайомому по ICQ посилання на контактну сторінку (або будь-яку іншу, не має значення).
Є два підходи вирішення проблеми посилань.
Надалі, при переході по такому посиланню (наприклад, з закладок) механізм добування контенту сторінки реалізується шляхом визначення на клієнті якоря, і подгрузки відповідного йому контенту. В інтернеті не дуже багато статей на цю тему. В рунеті взагалі практично немає.
Однією з проблем даного підходу є перша «неодружена завантаження контенту».
Є кілька варіантів вирішення даної проблеми. Один з них заснований на тимчасовому переховування контенту і подальшим показом його тільки після дозавантаження відповідного якоря контенту. Даний підхід все ж має недолік зайвої завантаження контенту. На жаль, прикладів такої реалізації я не знайшов.
Даний підхід має недолік індексації сайту пошуковими системами, вони бачать кореневу сторінку пустушку. Хоча тут я оперую загальними алгоритмами, цілком можливо, що професіонали в області пошуку або оптимізації можуть докладніше розкрити тему індексації такого контенту.
До речі, тут і криється, на мою думку, друга проблема AJAX - все ж він більше підходить для реалізації саме додатків, а контент і навігація в відкритому доступі - це трохи неправильно. У додатках проблеми посилань взагалі не виникає (уявити собі посилання на свій відкритий лист в GMail-е я не можу, і такої потреби тим більше), а ось розробники звичайних «тематичних» сайтів часто занадто заглиблюються в красивості, що не досліджуючи юзабіліті своїх проектів.
Ось такі ось пироги :). До даного клієнтського скрипту додається серверний скрипт, який при наявності внутрішнього реферера вантажить замість головної сторінки, сторінку яка вказана в реферера. Наводжу написаний на PHP робочий приклад реалізації мамбота для CMS Joomla:
$ _MAMBOTS-> registerFunction ( 'onStart', 'fullajaxStart');
Ну ось в принципі і все.
Даний алгоритм також має недолік (такий закон збереження енергії) - в результаті на 2 конекту більше до сервера (2 редиректу), але це може бути мізерно малою часткою по відношенню до «холостий завантаження контенту».
Приимущество розглянутого підходу - зберігається індексованих головної сторінки як у звичайного сайту, немає завантаження непотрібного контенту ( «холостий запит»), немає миготіння сторінки. Необхідність впровадження розглянутого алгоритму залежить від конкретної ситуації. Можливо вам це стане в нагоді. Користуйтеся на здоров'я!