If-Modified-Since header is sent by client and not server: Server just has to respond accordingly. This request header "Allows a 304 Not Modified to be returned if content is unchanged"
A conditional GET method requests that the identified resource be
transferred only if it has been modified since the date given by the
If-Modified-Since header. The algorithm for determining this includes
the following cases:
If the request would normally result in anything other than a 200
(ok) status, or if the passed If-Modified-Since date is invalid, the
response is exactly the same as for a normal GET. A date which is
later than the server's current time is invalid.
If the resource has been modified since the If-Modified-Since
date, the response is exactly the same as for a normal GET.
If the resource has not been modified since a valid
If-Modified-Since date, the server shall return a 304 (not modified)
The purpose of this feature is to allow efficient updates of cached
information with a minimum amount of transaction overhead.
It worth mentioning that wit ill automatically work for static files only (as such files are server directly by web server (Apache/IIS/etc) and it can detect the changes. For dynamically produced pages (by PHP/ASP.NET etc), you will need to implement your own logic inside the code that generates that page if you want to handle such request header efficiently.
You will not see this implemented for dynamically generated pages very often, unless you have very good full-page caching system in place -- either by Framework you use, by web server (IIS can do this) or maybe your proxy (like Varnish, for example).
Both Apache and Microsoft IIS do support these request headers (as they are that are used by GoDaddy on Shared Hosting plans).
Here is one tool (untested by me) that can check if your website supports this header. Obviously, the result will depend on what resource you will request (static file or dynamically generated page):