我有一个下载文件站点(.pdf,.rar,.jpg,...)。 我的服务器有一个大问题,我认为它与apache有关:
例如我链接到12.pdf下载它:
<a href="12.pdf">book</a>
它工作正常,但问题: 我用另一个同名文件更改了12.pdf。下载新的12.pdf时,会下载以前的文件。 即使我从服务器中删除12.pdf并在我的页面中按Ctrl + F5,当点击上面的链接时,12.pdf下载启动和文件下载完全!!而不存在服务器上具有12.pdf名称的文件。 有什么问题? apache缓存我的链接吗?怎么解决这个问题? 我的服务器操作系统是CentOS。
答案 0 :(得分:4)
某些可能有所帮助的解决方案,没有特别的顺序。
创建一个哈希:
更好的方法是通过引入来修改文件路径(或名称) 一个哈希值,当文件被修改时会改变;然后在阿帕奇 您可以删除该值以获取正确的文件路径(或 名称)。看这里: https://developers.google.com/speed/docs/best-practices/caching?hl=es-419#LeverageBrowserCaching
通过http://www.immense.net/force-update-cached-files-images-favicon/#comment-18489
服务器标头。缓存也可以基于响应头在服务器端进行控制。
例如,要强制缓存文件的时间不超过1天, 你会发送:
Cache-Control: max-age=86400, must-revalidate
对于测试版,如果您愿意 迫使用户总是得到最新的,你会使用:
Cache-Control: no-cache, must-revalidate
使用GET
变量。添加版本号或任何值,这将强制浏览器提取最新文件。例如:
<a href="12.pdf?ver=1.1">book</a>
许多人不建议将此技术用于任何可能需要缓存的文件(CSS,JavaScript等)。
在
.htaccess
指令中包含<FilesMatch>
行。对于 例如,这些行将阻止缓存以。结尾的文件名 “.htm”或“.html”,同时允许JPEG文件的正常缓存:<FilesMatch "\.(htm|html)$"> ExpiresActive On ExpiresDefault A1 Header append Cache-Control must-revalidate </FilesMatch>
<强>资源强>