Php 如果存在';url中有一个查询字符串吗?

Php 如果存在';url中有一个查询字符串吗?,php,caching,query-string,Php,Caching,Query String,我有一个主页,名为index.php,它列出了10个项目/产品 现在,我正在使用与登录页面相同的页面来获取来自facebook的向内流量。 url看起来像index.php?productID=Q231此页面仅显示带有指定ID的产品 我知道PHP输出缓存,但我是新手。我了解到,如果缓存index.php,它将为来自facebook的所有向内流量提供相同的缓存文件 我的理解正确吗?关于这一点,我已经搜索了很多,但我不清楚如何使用这个实例进行缓存 如果url中有查询字符串,是否有方法跳过或绕过服务器

我有一个主页,名为
index.php
,它列出了10个项目/产品

现在,我正在使用与登录页面相同的页面来获取来自facebook的向内流量。 url看起来像
index.php?productID=Q231
此页面仅显示带有指定ID的产品

我知道PHP输出缓存,但我是新手。我了解到,如果缓存
index.php
,它将为来自facebook的所有向内流量提供相同的缓存文件

  • 我的理解正确吗?关于这一点,我已经搜索了很多,但我不清楚如何使用这个实例进行缓存
  • 如果url中有查询字符串,是否有方法跳过或绕过服务器缓存文件/缓存

  • 如果有人能给我一些建议,我将不胜感激。

    如果我没弄错的话,缓存不是基于引用的。内部php缓存只是为了优化代码,它不会缓存,比如“外部”缓存系统,比如smarty中的inbuild缓存,输出。我认为您只需要“禁用”浏览器的缓存,这意味着使用
    头(…)

    发送正确的头。这实际上取决于您的缓存模型以及您在代码中如何处理

    如果使用输出缓冲创建整个对象,则可能需要使用以下方法:

    • 根据请求的脚本和/或请求参数生成缓存密钥,即在您的案例中使用productId
    • 检查是否已将给定密钥的输出保存到某个持久存储区
      • 如果是,输出
      • 如果否,则使用输出缓冲区,生成内容,保存到持久存储并保存在生成的缓存索引下,然后输出
    谷歌搜索带来了一个基本的例子:
    您正在使用输出缓存。然后,当你的facebook或twitter链接被调用时,你应该清除缓存。在codeigniter(PHP框架)中,我通过清除缓存来实现这一点

    在核心PHP中,我不知道如何清除缓存。但必须有一些方法来清除缓存。所以试试看

    这里的一些链接可能对您有用


    当index.php的缓存页面来自facebook时,您不需要它。我说得对吗?是的,srbhbarot我不想为缓存的页面提供服务……如果它来自facebook或twitter,也不想缓存它……嗨,giorgio……我很困惑……为什么我要禁用客户端/浏览器缓存……我需要它。我只是不想将服务器上的php缓存文件提供给来自facebook和twitter的传入流量……正如我在问题中所解释的那样。如果不明确发送缓存,就不会有任何服务器端缓存