まれな機能nginx:random_index

私は自分の夢を実現し、めったに使用されないnginxモジュールについて書くことにしました。 今日はrandom_index_moduleについてお話します。


ユーザーがランダムに同じページにアクセスするたびにわずかに異なるコンテンツを受信したいとします。 たとえば、ソフトウェアには、ユーザーに実際に見せたいいくつかのソフトウェア出版物から多くの賞がありますが、同時に、ページデザインの場所は1つの写真にのみ割り当てられます。 または、同じサイト内にバナーをランダムに配置してミニバナーシステムを作成しますか。 :)多くのアプリケーションがあります。

最も簡単なオプションは、ページのいくつかの静的バージョンを作成し、構成に適切なディレクティブを含めることです。

location /index.html {
random_index on;
alias /www/root/random_pages/;
}

したがって、誰かが/index.htmlを要求するたびに、nginxはディレクトリ/ www / root / random_pagesに移動し、そこにあるファイルをランダムに見つけます。

ただし、いくつかの問題があります。複数の「点滅」ブロックがある場合、ページオプションの数が非常に急速に増加する可能性があります。

SSIを思い出せば解決策があります。 ランダムブロックのセットごとに個別の場所を記述します。たとえば、次のとおりです。

location /banners/ {
random_index on;
alias /www/root/banners/;
}

location /awards/ {
random_index on;
alias /www/root/awards/;
}

そして、唯一の(今回は)index.htmlページに次のように記述します。

<div id="banner">
<!--# include virtual="/banners/" -->
</div>
...
<div id="my_preciousss_awards">
<!--# include virtual="/awards/" -->
</div>

そして、あなたがやるべきことは、/ www / root / banners /および/ www / root / Awards /ディレクトリに、対応するhtmlコンテンツを含む複数の(または少なくとも1つの)ファイルを置くだけです。

もちろん、このスキームはエラー処理を追加することでさらに改善できます(前述のフォルダーに少なくとも1つのファイルを置くのを忘れた場合)が、これは「宿題用」のままにしておくことができます。 :)

Source: https://habr.com/ru/post/J68148/


All Articles