Ищете более эффективный способ обслуживания многочисленных переадресаций ссылок? - PullRequest
3 голосов
/ 29 ноября 2010

Мне интересно, есть ли более эффективный способ обслуживания большого количества переадресаций ссылок. Для справки: мой сайт получает десятки тысяч пользователей в день, и мы " глубокая ссылка " на большое количество отдельных страниц продукта на партнерских сайтах.

Чтобы «скрыть» партнерские ссылки и хранить их все в одном месте, в настоящее время я обслуживаю все наши партнерские ссылки из одного файла PHP, например, пользователь нажимает на mysite.com/go.php?id=1 и попадает на страницу на сайте продавца, к которой добавляется наш партнерский файл cookie, где вы можете купить продукт. Код, который я использую, выглядит следующим образом:

<?php

$path = array(
‘1′ =>  ‘http://affiliatelink1.com’,
‘2′ =>  ‘http://affiliatelink2.com’,
‘3′ =>  ‘http://affiliatelink3.com’,

);

if (array_key_exists($_GET['id'], $path))
header(‘Location: ‘ .$path[$_GET['id']]);
?>

Проблема, с которой я сталкиваюсь, заключается в том, что мы каждый день ссылаемся на множество уникальных продуктов, а php-файл теперь содержит 11K + ссылок и растет с каждым днем. Я уже заметил, что для загрузки и редактирования файла через FTP требуется много времени, поскольку его размер составляет почти 2 МБ, а ссылки на нашем сайте не работают во время загрузки файла. Я также не знаю, хорошо ли для сервера обслуживать такое количество ссылок через один php-файл - я пока не заметил каких-либо замедлений, но, безусловно, вижу, что это происходит.

Так что я ищу другой вариант. Я думал о том, чтобы просто запустить новый файл .php (например, go2.php) для размещения большего количества ссылок, поскольку go.php настолько велик, но кажется неэффективным. Должен ли я использовать базу данных для этого вместо этого? Я тоже использую Wordpress, так что я обеспокоен слишком большим использованием mySQL, и простое выполнение этого в PHP кажется более быстрым, но, опять же, я не уверен.

Мой другой вариант - найти способ динамически создавать эти партнерские ссылки, то есть создать еще один PHP-файл, который будет брать URL-адрес продукта и добавлять к нему наш партнерский код, избавляя меня от необходимости вручную обновлять php-файл со всеми эти ссылки, однако я не уверен насчет влияния на сервер, если мы обслуживаем почти 100 000 кликов в день с помощью чего-то подобного.

Есть мысли? Является ли метод, который я использую, для написания верной смерти для нашего сервера, или я должен оставить все как есть для производительности? Будет ли это делать с базой данных или динамически увеличивать нагрузку на сервер, чем простой файл php, который я сейчас использую? Любая помощь / совет будет принята с благодарностью!

1 Ответ

3 голосов
/ 29 ноября 2010

Я бы сделал следующее:

Измените формат URL, чтобы в нем содержалось название продукта для SEO, например что-то вроде "my_new_product / 1"

Затем используйте mod_rewrite для сопоставления этого URL со страницей со строкой запроса, такой как:

Rewriterule ^([a-zA-Z0-9_-]*)/([0-9]*)$ index.php?id=$2 [L]

Затем создайте таблицу базы данных, содержащую следующие поля:

id (автономный номер, уникальный идентификатор) URL (URL для перенаправления на) описание (текст для создания URL на вашем сайте)

Затем вы можете создать простую CRUD-систему, чтобы легко обновлять ее и позволить вашим страницам обслуживать список ссылок из БД.

...