页面是动态生成的,因为现在我需要PHPSESSID
整个页面无法缓存。但至少我想以两种方式缓存所有静态内容,包括页面中包含的图像:
src="http://www.example.com/image.php?height=70&width=70&image=/ads/thumb/68370.jpg"
以及常规方式
src="http://www.example.com/uploads/user/thumb/8705.jpg
在Varnish配置文件中,jpg, png
和'image.php'
url等图像设置为缓存。
当页面在浏览器中打开两次时,Varnish似乎工作正常,jpgs, pngs
和image.php
年龄是> 0
现在,当我运行一个脚本来预热清漆缓存,然后第一次在浏览器中打开任何页面时,所有jpgs, pngs
和image.php
年龄始终为= 0
加热缓存的脚本:
wget --quiet -U Firefox http://$URL/$sitemap_file --no-cache --header='Cache- Control: no-cache' --output-document - | egrep -o "http(s?)://$URL[^ \"\'()\<>]+ " | while read line; do
if [[ $line == *.xml ]]
then
newURL=$line
wget --quiet -U Firefox $newURL --no-cache --header='Cache-Control: n o-cache' --output-document - | egrep -o "http(s?)://$URL[^ \"\'()\<>]+" | while read newline; do
time curl -A 'Cache Warmer' -sL -w "%{http_code} %{url_effective}\ n" $newline -o /dev/null 2>&1
echo $newline
done
else
time curl -A 'Cache Warmer' -sL -w "%{http_code} %{url_effective}\n" $line -o /dev/null 2>&1
echo $line
fi
done
其他静态文件(例如css
或js
没有问题,因为它们对于所有页面都是通用的,任何页面都可以将它们加载到缓存中,但每页的图像都不同。
那么,是否可以缓存来自变暖脚本的图像?
感谢您的任何提示 德里克
答案 0 :(得分:0)
默认情况下,Varnish将在缓存对象时在完整的URL(包括查询参数)上进行哈希处理。
也许您的预热脚本中的URL有不同的查询参数,然后是您稍后输入浏览器的URL?