隐藏?nocache查询字符串,但显示其效果

问题描述

我处于我的网站绝对不喜欢缓存的位置。缓存以某种方式导致了一个大问题,而我的CMS不允许我从缓存中排除某些脚本,因此我可以顺利加载页面。因此,我要做的是创建从我的URL yourdomain.com到yourdomain.com/?nocache的重定向。这将强制向用户显示一个非缓存的站点。这完全适合我。

但是,我想从URL中隐藏“?nocache”部分,并仍然强制显示网站的非缓存版本。请问对此有什么帮助吗?

我在wodpress.com上的wordpress BTW上,他们说不能禁用缓存,甚至缓存插件也没有作用,所以我不能从缓存中排除某些脚本。

解决方法

使用JS将?nocache(或者更好的是?timestamp,其中timestamp是当前的Unix时间,例如1598155107)附加到每个链接URL(或&timestamp(如果URL已经包含查询字符串)。

此解决方案使用jQuery,但您可以将其改编为普通JS:

$('a').each(function(i,link){
    let ts = new Date().getTime(); // E.g. 1598155107
    let href = $(this).attr('href');
    if ( href.match(/\?/) ) {
        href += '&';
    } else {
        href += '?';
    }
    href += ts;
    $(this).attr('href',href);
});
,

好吧,我已经意识到做到这一点的最好方法不是通过nocache重定向,而是在主题头中实际传递nocache头。

我通过了

nocache_headers();

更多信息:https://developer.wordpress.org/reference/functions/nocache_headers/

在header.php文件中,这解决了我的问题。现在,该站点成功加载而没有缓存。