MODx 缓存了不应该缓存的内容
我正在使用 MODx revo。我编写了一个名为 putBoxId 的代码片段,其中包含以下内容:
<?php
$id = isset($_GET['id']) ? $_GET['id'] : null;
if (!is_null($id)) {
return $modx->getChunk($tpl, array('id' => $id));
}
return '';
我这样使用它: [[~3[[!putBoxId? &tpl='boxIdUrl']] ]]
(当然,带有反引号),其中 boxIdUrl 是具有以下内容的块:
? &id=`[[+id]]`
问题是,由于某种原因它被缓存了。我尝试输入“!”在所有组合中,仍然会被缓存。如何解决这个问题?
I'm working with MODx revo. I wrote a snippet called putBoxId with the following content:
<?php
$id = isset($_GET['id']) ? $_GET['id'] : null;
if (!is_null($id)) {
return $modx->getChunk($tpl, array('id' => $id));
}
return '';
I use it like this: [[~3[[!putBoxId? &tpl='boxIdUrl']] ]]
(with backticks, of course), where boxIdUrl is the chunk with the following content:
? &id=`[[+id]]`
The problem is, for some reason it gets cached. I tried putting '!' In all combinations, still gets cached. How can this be fixed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
[[~3 正在被缓存,所以你的 putBoxId 实际上只在第一次被调用。
在 Revo 中 - 任何 *[[* (标签) 可以以 ! 开头(非可缓存标志)。
所以,在你的情况下 - [[!~3[[!putBoxId? &tpl='boxIdUrl']] ]](注意:此处存在拼写错误,在您原来的问题中,请参阅下面的评论。此应该有效:[[~3]][[!putBoxId? &tpl='boxIdUrl']])更多信息 这里
更好 - 除非有充分的理由,否则删除该块,因为 $modx->getChunk 调用不会在您的场景中缓存(前往数据库获取模板等...)。
使用 modx->makeUrl ( 在代码片段本身中完成所有操作请参阅链接了解更多选项)
像这样调用:
The [[~3 is being cached, so your putBoxId is actually called only the first time.
In Revo - any *[[* (tag) can start with a ! (non-cacheable flag).
So, in your case - [[!~3[[!putBoxId? &tpl='boxIdUrl']] ]](note: there's a typo here and in your original question, see comment below. this should work: [[~3]][[!putBoxId? &tpl='boxIdUrl']])more info here
Even better - unless there's a good reason, get rid of that chunk, as the $modx->getChunk call wouldn't be cached in your scenario (goes to db to get template, etc...).
Do it all in the snippet itself using modx->makeUrl (see link for more options)
Call like this: