该网站的实际网址是“allenbrookneighbors.org“。
在settings/阅读中,“your homepage display”被设置为“a static page”,“Homepage:“被设置为“Home”。在网站的文件结构中没有“/home”目录。“Home.php”只是一个空白的静态页面;在wp的分层搜索之后,front-page.php会在用户访问网站时加载。
首页上有少量的动态内容引用了“邻居”的话,当页面刷新时会改变,在firefox桌面上运行很好,但在Chrome edge safari甚至firefox移动的上都不行。
我们发现,如果用户将“/home”附加到网站url:“allenbrookneighbors.org/home“并点击{enter},我们可以绕过这些浏览器的本地缓存,每次都获得新的动态数据,但用户不知道这样做。
我们认为我们可以编写一个重定向函数,它只需要在传入的url中添加“/home”修饰符,但是页面无法加载;我们得到一条消息说,“页面没有正确重定向。[浏览器]检测到服务器正在重定向此地址的请求,这种方式永远不会完成。”
add_action('template_redirect', 'redirect_home_url');
function redirect_home_url() {
if (is_front_page() && !isset($_GET['redirected'])) {
wp_redirect(home_url('/home'));
exit;
}
}
字符串
所以问题是:有没有一种方法可以自动将“/home”添加到地址栏中的url(如果它还没有出现),这样如果用户访问页面的频率超过浏览器本地缓存的过期时间,他们就会看到新的内容?或者,如果用户在阅读内容后按下刷新按钮,他们就会看到新的内容?
1条答案
按热度按时间gg0vcinb1#
我不清楚
Home.php
的意义。如果你访问<yoursite>/home
,它不会加载该文件(除非你有一些有趣的htaccess/服务器配置)。或者你的意思是在你的WP模板中的Home.php静态页面?你可能会得到无限重定向,因为/home仍然由WP处理,它不知道你想在到达/home时停止重定向。此外,
isset($_GET['redirected'])
将无法工作,因为该参数未被设置(至少我在这里看不到:https://developer.wordpress.org/reference/functions/wp_redirect/#source)。所以我猜你至少要用这个来代替:
字符串
如何配置服务器以“告诉浏览器某些内容应该缓存多长时间.”
这有点依赖于服务器,但原则上你只需要设置响应头,这意味着你也可以在PHP中做这件事(如果你使用PHP来服务资源)。
示例
如果将其放入
.htaccess
中,则所有受影响的资源都应被任何人缓存一天(86400 s => 24小时,public =>任何人)。*
与之前相同,但仅适用于那些特定的文件扩展名。
*
PHP版本。可能对站点Map生成器,动态资产等有用。
刷新该高速缓存
HTTP标准非常灵活,它提供了缓存、无效以及避免缓存的方法。
MDN提供了一些破坏该高速缓存的案例和可能性。详情请参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#caching_static_assets_with_cache_busting
这基本上就是我在这里提到的:如何将“/home”添加到网站的url中