I'd like to set the following:
ExpiresActive On
ExpiresByType application/x-flash-swf "access plus 1 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
<FilesMatch "\.swf$">
Header set Cache-Control "public"
</FilesMatch>
but I usually set on html
<embed src="http://example.com/flash/example.swf?YYYYMMDDSS" />
What is the difference YYYYMMDDSS and Expires(mod_expires)?
mod_expires sets the headers in the HTTP protocol, and most caching servers which follow the HTTP specs do exactly what you request with the correct headers.
Using a query parameter with a date as part of a URL, and thus the corresponding GET request doesn't set any expiration. You are depending on the browser to operate the way you expect. This is a bit of a hack and is somewhat uncommon, but I suspect it works.
You can do both if you like.
"YYYYMMDDSS" will not be cached proxy server.
You can manual update user cache, change "YYYYMMDDSS".