Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][JavaScript][PHP] zastępowanie fragmentu strony onload - cloaking?
--Bartosz--
post 19.06.2012, 11:32:38
Post #1





Goście







Witam,
korzystam z cachowania zend frameworka całych stron (frontend output). Jednak część strony jest generowana dynamicznie, dla każdego użytkownika indywidualnie. Ta dynamiczna część była doczytywana ajaxem. Pojawił się jednak problem z google botami, ponieważ nie indeksowały one doczytywanej treści.
Mam pomysł, aby przy ładowaniu strony wyświetlać jakąś domyślną treść (którą widziałby bot) i od razu, onload zastępować ją ajaxem treścią dedykowaną dla usera. Pytanie tylko, czy taka metoda nie grozi banem od google za cloaking?
Go to the top of the page
+Quote Post
eviance
post 19.06.2012, 13:47:36
Post #2





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 18.03.2011
Skąd: R do M / Sanniki

Ostrzeżenie: (0%)
-----


siemka

1. pomysł zalatuje mi troche door-way page's (chyba tak sie to kmini), iż index strony po odczytaniu jest podmieniany, ale sam pomysł jest dość ciekawy - ciekawe jak w analizie.
2. a co bedzie jesli z czytania bedziesz miał swap code (wykonanie), a nastepnie przed podmianą wykonanie??

Luka
Go to the top of the page
+Quote Post
phpion
post 19.06.2012, 14:19:59
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Jakiś czas temu stałem przed podobnym problemem. Siedzę w Kohanie, ale możesz bez problemu (jak sądzę) podobną ideę zastosować u siebie.

Helper:
  1. class frache {
  2. /**
  3. * Wystawia dynamiczną treść.
  4. *
  5. */
  6. public static function dynamic() {
  7. echo '<!-- dynamic frache '.serialize(func_get_args()).' -->'."\n";
  8. }
  9.  
  10. /**
  11. * Zwraca wyrenderowaną treść dynamiczną.
  12. *
  13. * @param string $input Treść wejściowa.
  14. * @return string Wyrenderowana dynamiczna treść.
  15. */
  16. public static function render_dynamic($input) {
  17. return preg_replace_callback('#\<\!-- dynamic frache (.*?) --\>#sm', function($data) {
  18. if (is_array($data) && isset($data[1])) {
  19. $data = @unserialize($data[1]);
  20.  
  21. if (is_array($data)) {
  22. $function = array_shift($data);
  23.  
  24. return call_user_func_array($function, $data);
  25. }
  26. }
  27.  
  28. return '';
  29. }, (string)$input);
  30. }
  31. }

W cache'owanym całym widoku nie wstawiasz wywołań funkcji, tylko frache::dynamic($callback), czyli zamiast (przykładowo):
  1. <?php echo html::widget('user', 'panel') ?>

dajesz:
  1. <?php frache::dynamic(array('html', 'widget'), 'user', 'panel') ?>

Dzięki temu w źródle strony będziesz miał "znacznik", że w to miejsce należy wstawić dynamiczną treść podmienianą tuż przed wyświetleniem danych.

W momencie wysyłania danych na ekran (HTML już masz zapisany w cache) dodajesz jeszcze podmianę callbacków:
  1. $output = frache::render_dynamic($output);
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 22:36