如何将此PHP转换为Java以停止缓存



我正在使用fastcgi-cache全页缓存,并将php用于geoip_country_code,我只是使用了一个VPN并连接到另一个国家,我意识到页面已被缓存。

> >

我遵循了这一点:https://www.howtoforge.com/ususe-geoip-with-nginx-on-ubuntu-12.04,但这只是PHP示例,我找不到任何JavaScript示例。我正在调用FastCGI_Params的变量,只有PHP可以访问吗?

我的问题是:如何停止此代码缓存,我认为JavaScript不会缓存它,然后对吗?

<?php 
    $geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
    $geoip_country_name = getenv(GEOIP_COUNTRY_NAME);
    switch ($geoip_country_code) {
      case "US":
        echo "USA";
        break;
      case "UK":
      case "IE":
      case "AU":
        echo "AU";
        break;
      default:
        echo "default";
    }
    ?>

如果是这样,如何将此PHP作为JavaScript?

到目前为止,我已经尝试过:

<?php 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache"); // HTTP/1.0
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    $geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
    $geoip_country_name = getenv(GEOIP_COUNTRY_NAME);
    //etc..

它仍然缓存PHP代码,这就是为什么我要问如何在JavaScript中进行操作?

到目前为止我得到了:

<script type="text/javascript">
        document.write("Entering switch block<br />");
        var $geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
        var $geoip_country_name = getenv(GEOIP_COUNTRY_NAME);
        switch ($geoip_country_code) {
          case "US":
            text = "USA";
            break;
          case "UK":
          case "IE": 
          case 'AU': document.write("Good job<br />");
            break;
          default:
            document.write("Good job<br />");
        }
    </script>

但是它不起作用,我的javascript有限,我在做什么错?

不需要使用JavaScript。在PHP中使用缓存控制(通过向标头添加标签以防止缓存):

如何防止PHP网站浏览器缓存

事实证明,fastcgi缓存并不是每个人都在缓存同一页面。

因此,此php代码的缓存并不相同。

我以为这样做了。我运行了显示用户国家名称的PHP GeoIP代码,我冲洗了缓存并加载了页面,它说澳大利亚,我的朋友在白俄罗斯(Belarus)加载了该页面,在Fastcgi cached cached之后,我说白俄罗斯(Belarus)代替澳大利亚。

。 。

因此,fastcgi缓存必须是每个用户,而不是为所有人缓存同一页面。

最新更新