我有一个Wordpress网站,运行一个名为OpenHours的插件。基本上,我们在工作时间内将程序设置到网站的后端,然后有一个显示它们的页面/hours/
。我已经禁用了Wordpress中所有可能的缓存功能,并尝试使用以下内容编辑.htaccess
文件:
# DISABLE CACHING
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
<FilesMatch ".(css|flv|gif|htm|html|ico|jpe|jpeg|jpg|js|mp3|mp4|png|pdf|swf|txt)$">
<IfModule mod_expires.c>
ExpiresActive Off
</IfModule>
<IfModule mod_headers.c>
FileETag None
Header unset ETag
Header unset Pragma
Header unset Cache-Control
Header unset Last-Modified
Header set Pragma "no-cache"
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
</IfModule>
</FilesMatch>
我们有一个移动应用程序,基本上可以通过手机浏览器将用户链接到网页,但只要点击链接,页面就不会更新(插件配置为根据一天中的时间显示"当前打开"或"当前关闭"(。有没有一种方法可以强制页面在访问时进行更新而不缓存?
我尝试了一个查询字符串,但不幸的是,我们在应用程序中插入链接的位置不支持任何类型的编码,只是一个直链接,所以/hours/?rnd="+Math.random()
和/hours/?rnd="+new Date().getTime()
都不起作用。
您可以使用默认的PHPheader函数为特定页面设置新的页眉。
add_action("init", function() {
// TODO: Replace with the actual page ID or title
if(!is_page("page-without-cache")) return;
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.
}, 10);
我们使用init函数来确保在呈现页面之前发送了标头。
如果你使用任何缓存插件,你应该能够创建一个你不想包含或不想缓存的URL或目录列表。例如,在WP超级缓存插件中,该选项位于高级选项卡>接受的文件名&被拒绝的URI部分。默认情况下,这些路径将从缓存中排除。
wp-.*.php
index.php
此外,WP还具有名为nocache_headers或WP_nocache_headers的专用函数,您也可以使用这些函数来防止缓存。这些函数也使用默认的PHP头函数。