1

現在、php プロジェクトでワニス キャッシング システムの ESI インクルード機能を使用しようとしています。私のシナリオでは、esi タグ内の php 変数にアクセスする必要があります。次のようなもの...

 <p class="dt5">This article was read <esi:include src="http://localhost/live24/esi/viewCount" /> times. </p>

これは esi タグ内の完全な URL です。これは正常に機能します。つまり、サーバーから読み取りカウントを取得し、ページの残りの部分はキャッシュから提供されます。しかし、どうすればesiタグに渡すことができる動的URLを生成できますか.

私は次のようなことを試しました....

<?php $url = site_url() . "/esi/viewCount" ?>

また

<?php $url = "http://localhost/live24/esi/viewCount" ?>
<p class="dt5">This article was read <esi:include src="$(url)" /> times. </p>

$(variable_name)orはesiタグ内に変数を追加するための構文ですが、$(variable_name{key_name})PHP変数にアクセスしている間は機能していないようです。

私もこのようなことを試しました...

<p class="dt5">This article was read<esi:include src="http://$(SERVER{NAME})/live24/esi/viewCount" /> times. </p>

これは機能します。esi タグ内からスーパーグローバルにアクセスできることを示しています。

esi タグ内の php 変数にアクセスする方法や、esi インクルードで使用する動的 URL を生成するその他の方法はありますか。

4

1 に答える 1

0

解決策を見つけましたが、実際には非常にシンプルで簡単です。それをもっと早く考えるべきだった。

最初にコードスニペット..

<p class="dt5">This article was read
  <esi:remove>
    <?php $esiUrl = "http://localhost/bdlive24/esi/viewCount"; ?>
  </esi:remove>

  <!--esi
    <esi:include src=<?php echo $esiUrl; ?> />
  -->
times</p>

ここでのコツは<esi:remove>タグの導入です。remove タグ内のマークアップ コードはすべて無視され、php コードが実行されます。そのため、esi:remove タグ内で任意の動的 URL を生成し、esi:include タグ内でバインドすることが可能になりました。

<!-- ... -->このタグは、ESI 処理が有効になっている場合、ワニスによってサイレントに削除されます。ESI 処理が無効になっている場合、このタグが有効になり、esi:include タグが非アクティブになります。

他のアイデアを持っている人は、共有してください....

于 2016-02-08T05:53:50.323 に答える